var app = function(a) {
	function b(d) {
		if(c[d]) return c[d].exports;
		var e = c[d] = {
			i: d,
			l: !1,
			exports: {}
		};
		return a[d].call(e.exports, e, e.exports, b), e.l = !0, e.exports
	}
	var c = {};
	return b.m = a, b.c = c, b.i = function(a) {
		return a
	}, b.d = function(a, c, d) {
		b.o(a, c) || Object.defineProperty(a, c, {
			configurable: !1,
			enumerable: !0,
			get: d
		})
	}, b.n = function(a) {
		var c = a && a.__esModule ? function() {
			return a["default"]
		} : function() {
			return a
		};
		return b.d(c, "a", c), c
	}, b.o = function(a, b) {
		return Object.prototype.hasOwnProperty.call(a, b)
	}, b.p = "", b(b.s = 329)
}([function(a, b, c) {
	var d = c(2),
		e = c(25),
		f = c(12),
		g = c(13),
		h = c(26),
		i = "prototype",
		j = function(a, b, c) {
			var s, t, u, v, k = a & j.F,
				l = a & j.G,
				m = a & j.S,
				n = a & j.P,
				o = a & j.B,
				p = l ? d : m ? d[b] || (d[b] = {}) : (d[b] || {})[i],
				q = l ? e : e[b] || (e[b] = {}),
				r = q[i] || (q[i] = {});
			for(s in l && (c = b), c) t = !k && p && void 0 !== p[s], u = (t ? p : c)[s], v = o && t ? h(u, d) : n && "function" == typeof u ? h(Function.call, u) : u, p && g(p, s, u, a & j.U), q[s] != u && f(q, s, v), n && r[s] != u && (r[s] = u)
		};
	d.core = e, j.F = 1, j.G = 2, j.S = 4, j.P = 8, j.B = 16, j.W = 32, j.U = 64, j.R = 128, a.exports = j
}, function(a, b, c) {
	var d = c(4);
	a.exports = function(a) {
		if(!d(a)) throw TypeError(a + " is not an object!");
		return a
	}
}, function(a) {
	var b = a.exports = "undefined" != typeof window && window.Math == Math ? window : "undefined" != typeof self && self.Math == Math ? self : Function("return this")();
	"number" == typeof __g && (__g = b)
}, function(a) {
	a.exports = function(a) {
		try {
			return !!a()
		} catch(b) {
			return !0
		}
	}
}, function(a) {
	a.exports = function(a) {
		return "object" == typeof a ? null !== a : "function" == typeof a
	}
}, function(a, b, c) {
	var d = c(58)("wks"),
		e = c(40),
		f = c(2).Symbol,
		g = "function" == typeof f,
		h = a.exports = function(a) {
			return d[a] || (d[a] = g && f[a] || (g ? f : e)("Symbol." + a))
		};
	h.store = d
}, function(a, b, c) {
	a.exports = !c(3)(function() {
		return 7 != Object.defineProperty({}, "a", {
			get: function() {
				return 7
			}
		}).a
	})
}, function(a, b, c) {
	var d = c(1),
		e = c(98),
		f = c(24),
		g = Object.defineProperty;
	b.f = c(6) ? Object.defineProperty : function(a, b, c) {
		if(d(a), b = f(b, !0), d(c), e) try {
			return g(a, b, c)
		} catch(b) {}
		if("get" in c || "set" in c) throw TypeError("Accessors not supported!");
		return "value" in c && (a[b] = c.value), a
	}
}, function(a, b, c) {
	var d = c(31),
		e = Math.min;
	a.exports = function(a) {
		return a > 0 ? e(d(a), 9007199254740991) : 0
	}
}, function(a, b, c) {
	var d = c(20);
	a.exports = function(a) {
		return Object(d(a))
	}
}, function(a) {
	var b = {}.hasOwnProperty;
	a.exports = function(a, c) {
		return b.call(a, c)
	}
}, function(a) {
	a.exports = function(a) {
		if("function" != typeof a) throw TypeError(a + " is not a function!");
		return a
	}
}, function(a, b, c) {
	var d = c(7),
		e = c(30);
	a.exports = c(6) ? function(a, b, c) {
		return d.f(a, b, e(1, c))
	} : function(a, b, c) {
		return a[b] = c, a
	}
}, function(a, b, c) {
	var d = c(2),
		e = c(12),
		f = c(10),
		g = c(40)("src"),
		h = "toString",
		i = Function[h],
		j = ("" + i).split(h);
	c(25).inspectSource = function(a) {
		return i.call(a)
	}, (a.exports = function(a, b, c, h) {
		var i = "function" == typeof c;
		i && (f(c, "name") || e(c, "name", b)), a[b] === c || (i && (f(c, g) || e(c, g, a[b] ? "" + a[b] : j.join(b + ""))), a === d ? a[b] = c : h ? a[b] ? a[b] = c : e(a, b, c) : (delete a[b], e(a, b, c)))
	})(Function.prototype, h, function() {
		return "function" == typeof this && this[g] || i.call(this)
	})
}, function(a, b, c) {
	var d = c(0),
		e = c(3),
		f = c(20),
		g = /"/g,
		h = function(a, b, c, d) {
			var e = f(a) + "",
				h = "<" + b;
			return "" !== c && (h += " " + c + '="' + (d + "").replace(g, "&quot;") + '"'), h + ">" + e + "</" + b + ">"
		};
	a.exports = function(a, b) {
		var c = {};
		c[a] = b(h), d(d.P + d.F * e(function() {
			var b = "" [a]('"');
			return b !== b.toLowerCase() || 3 < b.split('"').length
		}), "String", c)
	}
}, function(a, b, c) {
	var d = c(47),
		e = c(20);
	a.exports = function(a) {
		return d(e(a))
	}
}, function(a, b, c) {
	var d = c(48),
		e = c(30),
		f = c(15),
		g = c(24),
		h = c(10),
		i = c(98),
		j = Object.getOwnPropertyDescriptor;
	b.f = c(6) ? j : function(a, b) {
		if(a = f(a), b = g(b, !0), i) try {
			return j(a, b)
		} catch(b) {}
		return h(a, b) ? e(!d.f.call(a, b), a[b]) : void 0
	}
}, function(a, b, c) {
	var d = c(10),
		e = c(9),
		f = c(77)("IE_PROTO"),
		g = Object.prototype;
	a.exports = Object.getPrototypeOf || function(a) {
		return a = e(a), d(a, f) ? a[f] : "function" == typeof a.constructor && a instanceof a.constructor ? a.constructor.prototype : a instanceof Object ? g : null
	}
}, function(a) {
	var b = String.fromCharCode,
		c = Math.round,
		d = Math.max,
		e = Math.floor,
		f = Math.abs,
		g = Math.min;
	! function(b, c) {
		a.exports = c()
	}(this, function() {
		"use strict";

		function a(a) {
			return new RegExp("(^|\\s)" + a + "(?:$|\\s)\\s*")
		}

		function h(a) {
			for(var b = a.childNodes.length; b > 0; --b) a.removeChild(a.firstChild);
			return a
		}

		function i(a, b) {
			return h(a).appendChild(b)
		}

		function j(a, b, c, d) {
			var f, e = document.createElement(a);
			if(c && (e.className = c), d && (e.style.cssText = d), "string" == typeof b) e.appendChild(document.createTextNode(b));
			else if(b)
				for(f = 0; f < b.length; ++f) e.appendChild(b[f]);
			return e
		}

		function k(a, b, c, d) {
			var e = j(a, b, c, d);
			return e.setAttribute("role", "presentation"), e
		}

		function l(a, b) {
			if(3 == b.nodeType && (b = b.parentNode), a.contains) return a.contains(b);
			do
				if(11 == b.nodeType && (b = b.host), b == a) return !0; while (b = b.parentNode)
		}

		function m() {
			var a;
			try {
				a = document.activeElement
			} catch(b) {
				a = document.body || null
			}
			for(; a && a.shadowRoot && a.shadowRoot.activeElement;) a = a.shadowRoot.activeElement;
			return a
		}

		function n(b, c) {
			var d = b.className;
			a(c).test(d) || (b.className += (d ? " " : "") + c)
		}

		function o(b, c) {
			for(var d = b.split(" "), e = 0; e < d.length; e++) d[e] && !a(d[e]).test(c) && (c += " " + d[e]);
			return c
		}

		function p(a) {
			var b = Array.prototype.slice.call(arguments, 1);
			return function() {
				return a.apply(null, b)
			}
		}

		function q(a, b, c) {
			for(var d in b || (b = {}), a) a.hasOwnProperty(d) && (!1 !== c || !b.hasOwnProperty(d)) && (b[d] = a[d]);
			return b
		}

		function r(a, b, c, d, e) {
			null == b && (b = a.search(/[^\s\u00a0]/), -1 == b && (b = a.length));
			for(var h, f = d || 0, g = e || 0;;) {
				if(h = a.indexOf("	", f), 0 > h || h >= b) return g + (b - f);
				g += h - f, g += c - g % c, f = h + 1
			}
		}

		function s(a, b) {
			for(var c = 0; c < a.length; ++c)
				if(a[c] == b) return c;
			return -1
		}

		function t(a, b, c) {
			var f, d, e, h;
			for(d = 0, e = 0;;) {
				if(f = a.indexOf("	", d), -1 == f && (f = a.length), h = f - d, f == a.length || e + h >= b) return d + g(h, b - e);
				if(e += f - d, e += c - e % c, d = f + 1, e >= b) return d
			}
		}

		function u(a) {
			for(; Hh.length <= a;) Hh.push(v(Hh) + " ");
			return Hh[a]
		}

		function v(a) {
			return a[a.length - 1]
		}

		function w(a, b) {
			for(var c = [], d = 0; d < a.length; d++) c[d] = b(a[d], d);
			return c
		}

		function x(a, b, c) {
			for(var d = 0, e = c(b); d < a.length && c(a[d]) <= e;) d++;
			a.splice(d, 0, b)
		}

		function y() {}

		function z(a, b) {
			var c;
			return Object.create ? c = Object.create(a) : (y.prototype = a, c = new y), b && q(b, c), c
		}

		function A(a) {
			return /\w/.test(a) || a > "" && (a.toUpperCase() != a.toLowerCase() || Ih.test(a))
		}

		function B(a, b) {
			return b ? -1 < b.source.indexOf("\\w") && A(a) || b.test(a) : A(a)
		}

		function C(a) {
			for(var b in a)
				if(a.hasOwnProperty(b) && a[b]) return !1;
			return !0
		}

		function D(a) {
			return 768 <= a.charCodeAt(0) && Jh.test(a)
		}

		function E(a, b, c) {
			for(;
				(0 > c ? b > 0 : b < a.length) && D(a.charAt(b));) b += c;
			return b
		}

		function F(a, b, c) {
			for(;;) {
				if(1 >= f(b - c)) return a(b) ? b : c;
				var d = e((b + c) / 2);
				a(d) ? c = d : b = d
			}
		}

		function G(a, b, c) {
			var e, d = this;
			this.input = c, d.scrollbarFiller = j("div", null, "CodeMirror-scrollbar-filler"), d.scrollbarFiller.setAttribute("cm-not-content", "true"), d.gutterFiller = j("div", null, "CodeMirror-gutter-filler"), d.gutterFiller.setAttribute("cm-not-content", "true"), d.lineDiv = k("div", null, "CodeMirror-code"), d.selectionDiv = j("div", null, null, "position: relative; z-index: 1"), d.cursorDiv = j("div", null, "CodeMirror-cursors"), d.measure = j("div", null, "CodeMirror-measure"), d.lineMeasure = j("div", null, "CodeMirror-measure"), d.lineSpace = k("div", [d.measure, d.lineMeasure, d.selectionDiv, d.cursorDiv, d.lineDiv], null, "position: relative; outline: none"), e = k("div", [d.lineSpace], "CodeMirror-lines"), d.mover = j("div", [e], null, "position: relative"), d.sizer = j("div", [d.mover], "CodeMirror-sizer"), d.sizerWidth = null, d.heightForcer = j("div", null, null, "position: absolute; height: " + Ch + "px; width: 1px;"), d.gutters = j("div", null, "CodeMirror-gutters"), d.lineGutter = null, d.scroller = j("div", [d.sizer, d.heightForcer, d.gutters], "CodeMirror-scroll"), d.scroller.setAttribute("tabIndex", "-1"), d.wrapper = j("div", [d.scrollbarFiller, d.gutterFiller, d.scroller], "CodeMirror"), gh && 8 > hh && (d.gutters.style.zIndex = -1, d.scroller.style.paddingRight = 0), ih || ch && rh || (d.scroller.draggable = !0), a && (a.appendChild ? a.appendChild(d.wrapper) : a(d.wrapper)), d.viewFrom = d.viewTo = b.first, d.reportedViewFrom = d.reportedViewTo = b.first, d.view = [], d.renderedView = null, d.externalMeasured = null, d.viewOffset = 0, d.lastWrapHeight = d.lastWrapWidth = 0, d.updateLineNumbers = null, d.nativeBarWidth = d.barHeight = d.barWidth = 0, d.scrollbarsClipped = !1, d.lineNumWidth = d.lineNumInnerWidth = d.lineNumChars = null, d.alignWidgets = !1, d.cachedCharWidth = d.cachedTextHeight = d.cachedPaddingH = null, d.maxLine = null, d.maxLineLength = 0, d.maxLineChanged = !1, d.wheelDX = d.wheelDY = d.wheelStartX = d.wheelStartY = null, d.shift = !1, d.selForContextMenu = null, d.activeTouch = null, c.init(d)
		}

		function H(a, b) {
			var c, d, e, f;
			if(b -= a.first, 0 > b || b >= a.size) throw new Error("There is no line " + (b + a.first) + " in the document.");
			for(c = a; !c.lines;)
				for(d = 0;; ++d) {
					if(e = c.children[d], f = e.chunkSize(), f > b) {
						c = e;
						break
					}
					b -= f
				}
			return c.lines[b]
		}

		function I(a, b, c) {
			var d = [],
				e = b.line;
			return a.iter(b.line, c.line + 1, function(a) {
				var f = a.text;
				e == c.line && (f = f.slice(0, c.ch)), e == b.line && (f = f.slice(b.ch)), d.push(f), ++e
			}), d
		}

		function J(a, b, c) {
			var d = [];
			return a.iter(b, c, function(a) {
				d.push(a.text)
			}), d
		}

		function K(a, b) {
			var d, c = b - a.height;
			if(c)
				for(d = a; d; d = d.parent) d.height += c
		}

		function L(a) {
			var b, c, d, e;
			if(null == a.parent) return null;
			for(b = a.parent, c = s(b.lines, a), d = b.parent; d; b = d, d = d.parent)
				for(e = 0; d.children[e] != b; ++e) c += d.children[e].chunkSize();
			return c + b.first
		}

		function M(a, b) {
			var d, e, f, g, h, i, c = a.first;
			a: do {
				for(d = 0; d < a.children.length; ++d) {
					if(e = a.children[d], f = e.height, f > b) {
						a = e;
						continue a
					}
					b -= f, c += e.chunkSize()
				}
				return c
			} while (!a.lines);
			for(g = 0; g < a.lines.length && (h = a.lines[g], i = h.height, !(i > b)); ++g) b -= i;
			return c + g
		}

		function N(a, b) {
			return b >= a.first && b < a.first + a.size
		}

		function O(a, b) {
			return a.lineNumberFormatter(b + a.firstLineNumber) + ""
		}

		function P(a, b, c) {
			return void 0 === c && (c = null), this instanceof P ? (this.line = a, this.ch = b, void(this.sticky = c)) : new P(a, b, c)
		}

		function Q(a, b) {
			return a.line - b.line || a.ch - b.ch
		}

		function R(a, b) {
			return a.sticky == b.sticky && 0 == Q(a, b)
		}

		function S(a) {
			return P(a.line, a.ch)
		}

		function T(a, b) {
			return 0 > Q(a, b) ? b : a
		}

		function U(a, b) {
			return 0 > Q(a, b) ? a : b
		}

		function V(a, b) {
			return d(a.first, g(b, a.first + a.size - 1))
		}

		function W(a, b) {
			if(b.line < a.first) return P(a.first, 0);
			var c = a.first + a.size - 1;
			return b.line > c ? P(c, H(a, c).text.length) : X(b, H(a, b.line).text.length)
		}

		function X(a, b) {
			var c = a.ch;
			return null == c || c > b ? P(a.line, b) : 0 > c ? P(a.line, 0) : a
		}

		function Y(a, b) {
			for(var c = [], d = 0; d < b.length; d++) c[d] = W(a, b[d]);
			return c
		}

		function Z() {
			Kh = !0
		}

		function $() {
			Lh = !0
		}

		function _(a, b, c) {
			this.marker = a, this.from = b, this.to = c
		}

		function ab(a, b) {
			if(a)
				for(var d, c = 0; c < a.length; ++c)
					if(d = a[c], d.marker == b) return d
		}

		function bb(a, b) {
			for(var d, c = 0; c < a.length; ++c) a[c] != b && (d || (d = [])).push(a[c]);
			return d
		}

		function cb(a, b) {
			a.markedSpans = a.markedSpans ? a.markedSpans.concat([b]) : [b], b.marker.attachLine(a)
		}

		function db(a, b, c) {
			var d, e, f, g, h, i;
			if(a)
				for(e = 0; e < a.length; ++e) f = a[e], g = f.marker, h = null == f.from || (g.inclusiveLeft ? f.from <= b : f.from < b), !h && (f.from != b || "bookmark" != g.type || c && f.marker.insertLeft) || (i = null == f.to || (g.inclusiveRight ? f.to >= b : f.to > b), (d || (d = [])).push(new _(g, f.from, i ? null : f.to)));
			return d
		}

		function eb(a, b, c) {
			var d, e, f, g, h, i;
			if(a)
				for(e = 0; e < a.length; ++e) f = a[e], g = f.marker, h = null == f.to || (g.inclusiveRight ? f.to >= b : f.to > b), (h || f.from == b && "bookmark" == g.type && (!c || f.marker.insertLeft)) && (i = null == f.from || (g.inclusiveLeft ? f.from <= b : f.from < b), (d || (d = [])).push(new _(g, i ? null : f.from - b, null == f.to ? null : f.to - b)));
			return d
		}

		function fb(a, b) {
			var c, d, e, f, g, h, i, j, k, m, l, n, p, o, q, r, t, s, u, w;
			if(b.full) return null;
			if(c = N(a, b.from.line) && H(a, b.from.line).markedSpans, d = N(a, b.to.line) && H(a, b.to.line).markedSpans, !c && !d) return null;
			if(e = b.from.ch, f = b.to.ch, g = 0 == Q(b.from, b.to), h = db(c, e, g), i = eb(d, f, g), j = 1 == b.text.length, k = v(b.text).length + (j ? e : 0), h)
				for(l = 0; l < h.length; ++l) m = h[l], null == m.to && (n = ab(i, m.marker), n ? j && (m.to = null == n.to ? null : n.to + k) : m.to = e);
			if(i)
				for(o = 0; o < i.length; ++o) p = i[o], null != p.to && (p.to += k), null == p.from ? (q = ab(h, p.marker), q || (p.from = k, j && (h || (h = [])).push(p))) : (p.from += k, j && (h || (h = [])).push(p));
			if(h && (h = gb(h)), i && i != h && (i = gb(i)), r = [h], !j) {
				if(s = b.text.length - 2, s > 0 && h)
					for(u = 0; u < h.length; ++u) null == h[u].to && (t || (t = [])).push(new _(h[u].marker, null, null));
				for(w = 0; s > w; ++w) r.push(t);
				r.push(i)
			}
			return r
		}

		function gb(a) {
			for(var c, b = 0; b < a.length; ++b) c = a[b], null != c.from && c.from == c.to && !1 !== c.marker.clearWhenEmpty && a.splice(b--, 1);
			return a.length ? a : null
		}

		function hb(a, b, c) {
			var e, f, j, g, h, i, k, l, m, d = null;
			if(a.iter(b.line, c.line + 1, function(a) {
					if(a.markedSpans)
						for(var c, b = 0; b < a.markedSpans.length; ++b) c = a.markedSpans[b].marker, c.readOnly && (!d || -1 == s(d, c)) && (d || (d = [])).push(c)
				}), !d) return null;
			for(e = [{
					from: b,
					to: c
				}], f = 0; f < d.length; ++f)
				for(g = d[f], h = g.find(0), i = 0; i < e.length; ++i) j = e[i], 0 > Q(j.to, h.from) || 0 < Q(j.from, h.to) || (k = [i, 1], l = Q(j.from, h.from), m = Q(j.to, h.to), !(0 > l) && (g.inclusiveLeft || l) || k.push({
					from: j.from,
					to: h.from
				}), !(m > 0) && (g.inclusiveRight || m) || k.push({
					from: h.to,
					to: j.to
				}), e.splice.apply(e, k), i += k.length - 3);
			return e
		}

		function ib(a) {
			var c, b = a.markedSpans;
			if(b) {
				for(c = 0; c < b.length; ++c) b[c].marker.detachLine(a);
				a.markedSpans = null
			}
		}

		function jb(a, b) {
			if(b) {
				for(var c = 0; c < b.length; ++c) b[c].marker.attachLine(a);
				a.markedSpans = b
			}
		}

		function kb(a) {
			return a.inclusiveLeft ? -1 : 0
		}

		function lb(a) {
			return a.inclusiveRight ? 1 : 0
		}

		function mb(a, b) {
			var d, e, f, g, c = a.lines.length - b.lines.length;
			return 0 != c ? c : (d = a.find(), e = b.find(), (f = Q(d.from, e.from) || kb(a) - kb(b)) ? -f : (g = Q(d.to, e.to) || lb(a) - lb(b), g ? g : b.id - a.id))
		}

		function nb(a, b) {
			var d, e, f, c = Lh && a.markedSpans;
			if(c)
				for(e = void 0, f = 0; f < c.length; ++f) e = c[f], e.marker.collapsed && null == (b ? e.from : e.to) && (!d || 0 > mb(d, e.marker)) && (d = e.marker);
			return d
		}

		function ob(a) {
			return nb(a, !0)
		}

		function pb(a) {
			return nb(a, !1)
		}

		function qb(a, b, c, d, e) {
			var i, h, j, k, l, f = H(a, b),
				g = Lh && f.markedSpans;
			if(g)
				for(h = 0; h < g.length; ++h)
					if(i = g[h], !!i.marker.collapsed && (j = i.marker.find(0), k = Q(j.from, c) || kb(i.marker) - kb(e), l = Q(j.to, d) || lb(i.marker) - lb(e), !(k >= 0 && 0 >= l || 0 >= k && l >= 0) && (0 >= k && (i.marker.inclusiveRight && e.inclusiveLeft ? 0 <= Q(j.to, c) : 0 < Q(j.to, c)) || k >= 0 && (i.marker.inclusiveRight && e.inclusiveLeft ? 0 >= Q(j.from, d) : 0 > Q(j.from, d))))) return !0
		}

		function rb(a) {
			for(var b; b = ob(a);) a = b.find(-1, !0).line;
			return a
		}

		function sb(a) {
			for(var b; b = pb(a);) a = b.find(1, !0).line;
			return a
		}

		function tb(a) {
			for(var b, c; b = pb(a);) a = b.find(1, !0).line, (c || (c = [])).push(a);
			return c
		}

		function ub(a, b) {
			var c = H(a, b),
				d = rb(c);
			return c == d ? b : L(d)
		}

		function vb(a, b) {
			if(b > a.lastLine()) return b;
			var d, c = H(a, b);
			if(!wb(a, c)) return b;
			for(; d = pb(c);) c = d.find(1, !0).line;
			return L(c) + 1
		}

		function wb(a, b) {
			var d, e, c = Lh && b.markedSpans;
			if(c)
				for(d = void 0, e = 0; e < c.length; ++e)
					if(d = c[e], !!d.marker.collapsed) {
						if(null == d.from) return !0;
						if(!d.marker.widgetNode && 0 == d.from && d.marker.inclusiveLeft && xb(a, b, d)) return !0
					}
		}

		function xb(a, b, c) {
			var d, e, f;
			if(null == c.to) return d = c.marker.find(1, !0), xb(a, d.line, ab(d.line.markedSpans, c.marker));
			if(c.marker.inclusiveRight && c.to == b.text.length) return !0;
			for(e = void 0, f = 0; f < b.markedSpans.length; ++f)
				if(e = b.markedSpans[f], e.marker.collapsed && !e.marker.widgetNode && e.from == c.to && (null == e.to || e.to != c.from) && (e.marker.inclusiveLeft || c.marker.inclusiveRight) && xb(a, b, e)) return !0
		}

		function yb(a) {
			var e, b, c, d, f, h, g;
			for(a = rb(a), b = 0, c = a.parent, d = 0; d < c.lines.length && (e = c.lines[d], e != a); ++d) b += e.height;
			for(f = c.parent; f; c = f, f = c.parent)
				for(g = 0; g < f.children.length && (h = f.children[g], h != c); ++g) b += h.height;
			return b
		}

		function zb(a) {
			var d, e, b, c, f;
			if(0 == a.height) return 0;
			for(b = a.text.length, c = a; d = ob(c);) e = d.find(0, !0), c = e.from.line, b += e.from.ch - e.to.ch;
			for(c = a; d = pb(c);) f = d.find(0, !0), b -= c.text.length - f.from.ch, c = f.to.line, b += c.text.length - f.to.ch;
			return b
		}

		function Ab(a) {
			var b = a.display,
				c = a.doc;
			b.maxLine = H(c, c.first), b.maxLineLength = zb(b.maxLine), b.maxLineChanged = !0, c.iter(function(a) {
				var c = zb(a);
				c > b.maxLineLength && (b.maxLineLength = c, b.maxLine = a)
			})
		}

		function Bb(a, b, c, e) {
			if(!a) return e(b, c, "ltr");
			for(var i, f = !1, h = 0; h < a.length; ++h) i = a[h], (i.from < c && i.to > b || b == c && i.to == b) && (e(d(i.from, b), g(i.to, c), 1 == i.level ? "rtl" : "ltr"), f = !0);
			f || e(b, c, "ltr")
		}

		function Cb(a, b, c) {
			var d, f, e;
			for(Mh = null, e = 0; e < a.length; ++e) {
				if(f = a[e], f.from < b && f.to > b) return e;
				f.to == b && (f.from != f.to && "before" == c ? d = e : Mh = e), f.from == b && (f.from != f.to && "before" != c ? d = e : Mh = e)
			}
			return null == d ? Mh : d
		}

		function Db(a, b) {
			var c = a.order;
			return null == c && (c = a.order = Nh(a.text, b)), c
		}

		function Eb(a, b, c) {
			var d = E(a.text, b + c, c);
			return 0 > d || d > a.text.length ? null : d
		}

		function Fb(a, b, c) {
			var d = Eb(a, b.ch, c);
			return null == d ? null : new P(b.line, d, 0 > c ? "after" : "before")
		}

		function Gb(a, b, c, d, e) {
			var f, j, g, h, i, k, l;
			return a && (f = Db(c, b.doc.direction)) ? (g = 0 > e ? v(f) : f[0], h = 0 > e == (1 == g.level), i = h ? "after" : "before", 0 < g.level ? (k = bd(b, c), j = 0 > e ? c.text.length - 1 : 0, l = cd(b, k, j).top, j = F(function(a) {
				return cd(b, k, a).top == l
			}, 0 > e == (1 == g.level) ? g.from : g.to - 1, j), "before" == i && (j = Eb(c, j, 1))) : j = 0 > e ? g.to : g.from, new P(d, j, i)) : new P(d, 0 > e ? c.text.length : 0, 0 > e ? "before" : "after")
		}

		function Hb(a, b, c, d) {
			var f, g, k, h, i, j, l, m, n, o, p, q, e = Db(b, a.doc.direction);
			return e ? (c.ch >= b.text.length ? (c.ch = b.text.length, c.sticky = "before") : 0 >= c.ch && (c.ch = 0, c.sticky = "after"), f = Cb(e, c.ch, c.sticky), g = e[f], "ltr" == a.doc.direction && 0 == g.level % 2 && (d > 0 ? g.to > c.ch : g.from < c.ch) ? Fb(b, c, d) : (h = function(a, c) {
				return Eb(b, a instanceof P ? a.ch : a, c)
			}, i = function(c) {
				return a.options.lineWrapping ? (k = k || bd(a, b), ud(a, b, k, c)) : {
					begin: 0,
					end: b.text.length
				}
			}, j = i("before" == c.sticky ? h(c, -1) : c.ch), "rtl" != a.doc.direction && 1 != g.level || (l = 1 == g.level == 0 > d, m = h(c, l ? 1 : -1), null == m || !(l ? m <= g.to && m <= j.end : m >= g.from && m >= j.begin)) ? (o = function(a, b, d) {
				var f, g, i, j;
				for(f = function(a, b) {
						return b ? new P(c.line, h(a, 1), "before") : new P(c.line, a, "after")
					}; a >= 0 && a < e.length; a += b) {
					if(g = e[a], i = b > 0 == (1 != g.level), j = i ? d.begin : h(d.end, -1), g.from <= j && j < g.to) return f(j, i);
					if(j = i ? g.from : h(g.to, -1), d.begin <= j && j < d.end) return f(j, i)
				}
			}, (p = o(f + d, d, j)) ? p : (q = d > 0 ? j.end : h(j.begin, -1), null == q || d > 0 && q == b.text.length || !(p = o(d > 0 ? 0 : e.length - 1, d, i(q))) ? null : p)) : (n = l ? "before" : "after", new P(c.line, m, n)))) : Fb(b, c, d)
		}

		function Ib(a, b) {
			return a._handlers && a._handlers[b] || Oh
		}

		function Jb(a, b, c) {
			var d, e, f;
			a.removeEventListener ? a.removeEventListener(b, c, !1) : a.detachEvent ? a.detachEvent("on" + b, c) : (d = a._handlers, e = d && d[b], e && (f = s(e, c), f > -1 && (d[b] = e.slice(0, f).concat(e.slice(f + 1)))))
		}

		function Kb(a, b) {
			var d, e, c = Ib(a, b);
			if(c.length)
				for(d = Array.prototype.slice.call(arguments, 2), e = 0; e < c.length; ++e) c[e].apply(null, d)
		}

		function Lb(a, b, c) {
			return "string" == typeof b && (b = {
				type: b,
				preventDefault: function() {
					this.defaultPrevented = !0
				}
			}), Kb(a, c || b.type, a, b), Rb(b) || b.codemirrorIgnore
		}

		function Mb(a) {
			var c, d, b = a._handlers && a._handlers.cursorActivity;
			if(b)
				for(c = a.curOp.cursorActivityHandlers || (a.curOp.cursorActivityHandlers = []), d = 0; d < b.length; ++d) - 1 == s(c, b[d]) && c.push(b[d])
		}

		function Nb(a, b) {
			return 0 < Ib(a, b).length
		}

		function Ob(a) {
			a.prototype.on = function(a, b) {
				Ph(this, a, b)
			}, a.prototype.off = function(a, b) {
				Jb(this, a, b)
			}
		}

		function Pb(a) {
			a.preventDefault ? a.preventDefault() : a.returnValue = !1
		}

		function Qb(a) {
			a.stopPropagation ? a.stopPropagation() : a.cancelBubble = !0
		}

		function Rb(a) {
			return null == a.defaultPrevented ? 0 == a.returnValue : a.defaultPrevented
		}

		function Sb(a) {
			Pb(a), Qb(a)
		}

		function Tb(a) {
			return a.target || a.srcElement
		}

		function Ub(a) {
			var b = a.which;
			return null == b && (1 & a.button ? b = 1 : 2 & a.button ? b = 3 : 4 & a.button && (b = 2)), sh && a.ctrlKey && 1 == b && (b = 3), b
		}

		function Vb(a) {
			var b, c;
			return null == Zh && (b = j("span", "​"), i(a, j("span", [b, document.createTextNode("x")])), 0 != a.firstChild.offsetHeight && (Zh = 1 >= b.offsetWidth && 2 < b.offsetHeight && !(gh && 8 > hh))), c = Zh ? j("span", "​") : j("span", " ", null, "display: inline-block; width: 1px; margin-right: -1px"), c.setAttribute("cm-text", ""), c
		}

		function Wb(a) {
			if(null != $h) return $h;
			var b = i(a, document.createTextNode("AخA")),
				c = zh(b, 0, 1).getBoundingClientRect(),
				d = zh(b, 1, 2).getBoundingClientRect();
			return h(a), c && c.left != c.right && ($h = 3 > d.right - c.right)
		}

		function Xb(a) {
			if(null != Uh) return Uh;
			var b = i(a, j("span", "x")),
				c = b.getBoundingClientRect(),
				d = zh(b, 0, 1).getBoundingClientRect();
			return Uh = 1 < f(c.left - d.left)
		}

		function Yb(a, b) {
			2 < arguments.length && (b.dependencies = Array.prototype.slice.call(arguments, 2)), Vh[a] = b
		}

		function Zb(a) {
			if("string" == typeof a && Wh.hasOwnProperty(a)) a = Wh[a];
			else if(a && "string" == typeof a.name && Wh.hasOwnProperty(a.name)) {
				var b = Wh[a.name];
				"string" == typeof b && (b = {
					name: b
				}), a = z(b, a), a.name = b.name
			} else {
				if("string" == typeof a && /^[\w\-]+\/[\w\-]+\+xml$/.test(a)) return Zb("application/xml");
				if("string" == typeof a && /^[\w\-]+\/[\w\-]+\+json$/.test(a)) return Zb("application/json")
			}
			return "string" == typeof a ? {
				name: a
			} : a || {
				name: "null"
			}
		}

		function $b(a, b) {
			var c, d, e, f, g;
			if(b = Zb(b), c = Vh[b.name], !c) return $b(a, "text/plain");
			if(d = c(a, b), Xh.hasOwnProperty(b.name)) {
				e = Xh[b.name];
				for(f in e) e.hasOwnProperty(f) && (d.hasOwnProperty(f) && (d["_" + f] = d[f]), d[f] = e[f])
			}
			if(d.name = b.name, b.helperType && (d.helperType = b.helperType), b.modeProps)
				for(g in b.modeProps) d[g] = b.modeProps[g];
			return d
		}

		function _b(a, b) {
			var c = Xh.hasOwnProperty(a) ? Xh[a] : Xh[a] = {};
			q(b, c)
		}

		function ac(a, b) {
			var c, d, e;
			if(!0 === b) return b;
			if(a.copyState) return a.copyState(b);
			c = {};
			for(d in b) e = b[d], e instanceof Array && (e = e.concat([])), c[d] = e;
			return c
		}

		function bc(a, b) {
			for(var c; a.innerMode && (c = a.innerMode(b), c && c.mode != a);) b = c.state, a = c.mode;
			return c || {
				mode: a,
				state: b
			}
		}

		function cc(a, b, c) {
			return !a.startState || a.startState(b, c)
		}

		function dc(a, b, c, d) {
			var h, i, e = [a.state.modeGen],
				f = {};
			for(lc(a, b.text, a.doc.mode, c, function(a, b) {
					return e.push(a, b)
				}, f, d), h = function(c) {
					var d = a.state.overlays[c],
						h = 1,
						i = 0;
					lc(a, b.text, d.mode, !0, function(a, b) {
						var f, c, j;
						for(c = h; a > i;) f = e[h], f > a && e.splice(h, 1, a, e[h + 1], f), h += 2, i = g(a, f);
						if(b)
							if(d.opaque) e.splice(c, h - c, a, "overlay " + b), h = c + 2;
							else
								for(; h > c; c += 2) j = e[c + 1], e[c + 1] = (j ? j + " " : "") + "overlay " + b
					}, f)
				}, i = 0; i < a.state.overlays.length; ++i) h(i);
			return {
				styles: e,
				classes: f.bgClass || f.textClass ? f : null
			}
		}

		function ec(a, b, c) {
			if(!b.styles || b.styles[0] != a.state.modeGen) {
				var d = fc(a, L(b)),
					e = dc(a, b, b.text.length > a.options.maxHighlightLength ? ac(a.doc.mode, d) : d);
				b.stateAfter = d, b.styles = e.styles, e.classes ? b.styleClasses = e.classes : b.styleClasses && (b.styleClasses = null), c === a.doc.frontier && a.doc.frontier++
			}
			return b.styles
		}

		function fc(a, b, c) {
			var f, g, d = a.doc,
				e = a.display;
			return d.mode.startState ? (f = mc(a, b, c), g = f > d.first && H(d, f - 1).stateAfter, g = g ? ac(d.mode, g) : cc(d.mode), d.iter(f, b, function(c) {
				gc(a, c.text, g);
				var h = f == b - 1 || 0 == f % 5 || f >= e.viewFrom && f < e.viewTo;
				c.stateAfter = h ? ac(d.mode, g) : null, ++f
			}), c && (d.frontier = f), g) : !0
		}

		function gc(a, b, c, d) {
			var e = a.doc.mode,
				f = new Yh(b, a.options.tabSize);
			for(f.start = f.pos = d || 0, "" == b && hc(e, c); !f.eol();) ic(e, f, c), f.start = f.pos
		}

		function hc(a, b) {
			if(a.blankLine) return a.blankLine(b);
			if(a.innerMode) {
				var c = bc(a, b);
				if(c.mode.blankLine) return c.mode.blankLine(c.state)
			}
		}

		function ic(a, b, c, d) {
			var e, f;
			for(e = 0; 10 > e; e++)
				if(d && (d[0] = bc(a, c).mode), f = a.token(b, c), b.pos > b.start) return f;
			throw new Error("Mode " + a.name + " failed to advance stream.")
		}

		function jc(a, b, c, d) {
			var h, l, i, j, k, e = function(a) {
					return {
						start: k.start,
						end: k.pos,
						string: k.current(),
						type: h || null,
						state: a ? ac(f.mode, j) : j
					}
				},
				f = a.doc,
				g = f.mode;
			for(b = W(f, b), i = H(f, b.line), j = fc(a, b.line, c), k = new Yh(i.text, a.options.tabSize), d && (l = []);
				(d || k.pos < b.ch) && !k.eol();) k.start = k.pos, h = ic(g, k, j), d && l.push(e(!0));
			return d ? l : e()
		}

		function kc(a, b) {
			var c, d;
			if(a)
				for(; c = a.match(/(?:^|\s+)line-(background-)?(\S+)/), c;) a = a.slice(0, c.index) + a.slice(c.index + c[0].length), d = c[1] ? "bgClass" : "textClass", null == b[d] ? b[d] = c[2] : !new RegExp("(?:^|s)" + c[2] + "(?:$|s)").test(b[d]) && (b[d] += " " + c[2]);
			return a
		}

		function lc(a, b, c, d, e, f, h) {
			var n, j, k, l, m, o, p, i = c.flattenSpans;
			for(null == i && (i = a.options.flattenSpans), j = 0, k = null, l = new Yh(b, a.options.tabSize), m = a.options.addModeClass && [null], "" == b && kc(hc(c, d), f); !l.eol();) {
				if(l.pos > a.options.maxHighlightLength ? (i = !1, h && gc(a, b, d, l.pos), l.pos = b.length, n = null) : n = kc(ic(c, l, d, m), f), m && (o = m[0].name, o && (n = "m-" + (n ? o + " " + n : o))), !i || k != n) {
					for(; j < l.start;) j = g(l.start, j + 5e3), e(j, k);
					k = n
				}
				l.start = l.pos
			}
			for(; j < l.pos;) p = g(l.pos, j + 5e3), e(p, k), j = p
		}

		function mc(a, b, c) {
			var g, h, d, e, f, i, j;
			for(d = a.doc, e = c ? -1 : b - (a.doc.mode.innerMode ? 1e3 : 100), f = b; f > e; --f) {
				if(f <= d.first) return d.first;
				if(i = H(d, f - 1), i.stateAfter && (!c || f <= d.frontier)) return f;
				j = r(i.text, null, a.options.tabSize), (null == h || g > j) && (h = f - 1, g = j)
			}
			return h
		}

		function nc(a, b, c, d) {
			a.text = b, a.stateAfter && (a.stateAfter = null), a.styles && (a.styles = null), null != a.order && (a.order = null), ib(a), jb(a, c);
			var e = d ? d(a) : 1;
			e != a.height && K(a, e)
		}

		function oc(a) {
			a.parent = null, ib(a)
		}

		function pc(a, b) {
			if(!a || /^\s*$/.test(a)) return null;
			var c = b.addModeClass ? bi : ai;
			return c[a] || (c[a] = a.replace(/\S+/g, "cm-$&"))
		}

		function qc(a, b) {
			var e, f, g, h, i, c = k("span", null, null, ih ? "padding-right: .1px" : null),
				d = {
					pre: k("pre", [c], "CodeMirror-line"),
					content: c,
					col: 0,
					pos: 0,
					cm: a,
					trailingSpace: !1,
					splitSpaces: (gh || ih) && a.getOption("lineWrapping")
				};
			for(b.measure = {}, e = 0; e <= (b.rest ? b.rest.length : 0); e++) f = e ? b.rest[e - 1] : b.line, g = void 0, d.pos = 0, d.addToken = sc, Wb(a.display.measure) && (g = Db(f, a.doc.direction)) && (d.addToken = uc(d.addToken, g)), d.map = [], h = b != a.display.externalMeasured && L(f), wc(f, d, ec(a, f, h)), f.styleClasses && (f.styleClasses.bgClass && (d.bgClass = o(f.styleClasses.bgClass, d.bgClass || "")), f.styleClasses.textClass && (d.textClass = o(f.styleClasses.textClass, d.textClass || ""))), 0 == d.map.length && d.map.push(0, 0, d.content.appendChild(Vb(a.display.measure))), 0 == e ? (b.measure.map = d.map, b.measure.cache = {}) : ((b.measure.maps || (b.measure.maps = [])).push(d.map), (b.measure.caches || (b.measure.caches = [])).push({}));
			return ih && (i = d.content.lastChild, (/\bcm-tab\b/.test(i.className) || i.querySelector && i.querySelector(".cm-tab")) && (d.content.className = "cm-tab-wrap-hack")), Kb(a, "renderLine", a, b.line, d.pre), d.pre.className && (d.textClass = o(d.pre.className, d.textClass || "")), d
		}

		function rc(a) {
			var b = j("span", "•", "cm-invalidchar");
			return b.title = "\\u" + a.charCodeAt(0).toString(16), b.setAttribute("aria-label", b.title), b
		}

		function sc(a, b, c, d, e, f, g) {
			var l, h, i, k, m, n, o, p, q, r, s, t, v;
			if(b) {
				if(h = a.splitSpaces ? tc(b, a.trailingSpace) : b, i = a.cm.state.specialChars, k = !1, i.test(b))
					for(l = document.createDocumentFragment(), m = 0; i.lastIndex = m, n = i.exec(b), o = n ? n.index - m : b.length - m, o && (p = document.createTextNode(h.slice(m, m + o)), gh && 9 > hh ? l.appendChild(j("span", [p])) : l.appendChild(p), a.map.push(a.pos, a.pos + o, p), a.col += o, a.pos += o), n;) m += o + 1, q = void 0, "	" == n[0] ? (r = a.cm.options.tabSize, s = r - a.col % r, q = l.appendChild(j("span", u(s), "cm-tab")), q.setAttribute("role", "presentation"), q.setAttribute("cm-text", "	"), a.col += s) : "\r" == n[0] || "\n" == n[0] ? (q = l.appendChild(j("span", "\r" == n[0] ? "␍" : "␤", "cm-invalidchar")), q.setAttribute("cm-text", n[0]), a.col += 1) : (q = a.cm.options.specialCharPlaceholder(n[0]), q.setAttribute("cm-text", n[0]), gh && 9 > hh ? l.appendChild(j("span", [q])) : l.appendChild(q), a.col += 1), a.map.push(a.pos, a.pos + 1, q), a.pos++;
				else a.col += b.length, l = document.createTextNode(h), a.map.push(a.pos, a.pos + b.length, l), gh && 9 > hh && (k = !0), a.pos += b.length;
				if(a.trailingSpace = 32 == h.charCodeAt(b.length - 1), c || d || e || k || g) return t = c || "", d && (t += d), e && (t += e), v = j("span", [l], t, g), f && (v.title = f), a.content.appendChild(v);
				a.content.appendChild(l)
			}
		}

		function tc(a, b) {
			if(1 < a.length && !/  /.test(a)) return a;
			for(var f, c = b, d = "", e = 0; e < a.length; e++) f = a.charAt(e), " " == f && c && (e == a.length - 1 || 32 == a.charCodeAt(e + 1)) && (f = " "), d += f, c = " " == f;
			return d
		}

		function uc(a, b) {
			return function(c, d, e, f, g, h, i) {
				var j, k, l, m;
				for(e = e ? e + " cm-force-border" : "cm-force-border", j = c.pos, k = j + d.length;;) {
					for(l = void 0, m = 0; m < b.length && (l = b[m], !(l.to > j && l.from <= j)); m++);
					if(l.to >= k) return a(c, d, e, f, g, h, i);
					a(c, d.slice(0, l.to - j), e, f, null, h, i), f = null, d = d.slice(l.to - j), j = l.to
				}
			}
		}

		function vc(a, b, c, d) {
			var e = !d && c.widgetNode;
			e && a.map.push(a.pos, a.pos + b, e), !d && a.cm.display.input.needsContentAttribute && (!e && (e = a.content.appendChild(document.createElement("span"))), e.setAttribute("cm-marker", c.id)), e && (a.cm.display.input.setUneditable(e), a.content.appendChild(e)), a.pos += b, a.trailingSpace = !1
		}

		function wc(a, b, c) {
			var h, n, o, p, q, r, s, t, i, j, k, l, m, u, v, w, x, y, z, A, B, C, D, d = a.markedSpans,
				e = a.text,
				f = 0;
			if(d)
				for(i = e.length, j = 0, k = 1, l = "", m = 0;;) {
					if(m == j) {
						for(p = q = r = s = o = "", t = null, m = 1 / 0, u = [], v = void 0, w = 0; w < d.length; ++w) x = d[w], y = x.marker, "bookmark" == y.type && x.from == j && y.widgetNode ? u.push(y) : x.from <= j && (null == x.to || x.to > j || y.collapsed && x.to == j && x.from == j) ? (null != x.to && x.to != j && m > x.to && (m = x.to, q = ""), y.className && (p += " " + y.className), y.css && (o = (o ? o + ";" : "") + y.css), y.startStyle && x.from == j && (r += " " + y.startStyle), y.endStyle && x.to == m && (v || (v = [])).push(y.endStyle, x.to), y.title && !s && (s = y.title), y.collapsed && (!t || 0 > mb(t.marker, y)) && (t = x)) : x.from > j && m > x.from && (m = x.from);
						if(v)
							for(z = 0; z < v.length; z += 2) v[z + 1] == m && (q += " " + v[z]);
						if(!t || t.from == j)
							for(A = 0; A < u.length; ++A) vc(b, 0, u[A]);
						if(t && (t.from || 0) == j) {
							if(vc(b, (null == t.to ? i + 1 : t.to) - j, t.marker, null == t.from), null == t.to) return;
							t.to == j && (t = !1)
						}
					}
					if(j >= i) break;
					for(B = g(i, m);;) {
						if(l) {
							if(C = j + l.length, t || (D = C > B ? l.slice(0, B - j) : l, b.addToken(b, D, n ? n + p : p, r, j + D.length == m ? q : "", s, o)), C >= B) {
								l = l.slice(B - j), j = B;
								break
							}
							j = C, r = ""
						}
						l = e.slice(f, f = c[k++]), n = pc(c[k++], b.cm.options)
					}
				} else
					for(h = 1; h < c.length; h += 2) b.addToken(b, e.slice(f, f = c[h]), pc(c[h + 1], b.cm.options))
		}

		function xc(a, b, c) {
			this.line = b, this.rest = tb(b), this.size = this.rest ? L(v(this.rest)) - c + 1 : 1, this.node = this.text = null, this.hidden = wb(a, b)
		}

		function yc(a, b, c) {
			for(var f, g, d = [], e = b; c > e; e = f) g = new xc(a.doc, H(a.doc, e), e), f = e + g.size, d.push(g);
			return d
		}

		function zc(a) {
			ci ? ci.ops.push(a) : a.ownsGroup = ci = {
				ops: [a],
				delayedCallbacks: []
			}
		}

		function Ac(a) {
			var e, d, b = a.delayedCallbacks,
				c = 0;
			do {
				for(; c < b.length; c++) b[c].call(null);
				for(d = 0; d < a.ops.length; d++)
					if(e = a.ops[d], e.cursorActivityHandlers)
						for(; e.cursorActivityCalled < e.cursorActivityHandlers.length;) e.cursorActivityHandlers[e.cursorActivityCalled++].call(null, e.cm)
			} while (c < b.length)
		}

		function Bc(a, b) {
			var c = a.ownsGroup;
			if(c) try {
				Ac(c)
			} finally {
				ci = null, b(c)
			}
		}

		function Cc(a, b) {
			var e, d, f, g, c = Ib(a, b);
			if(c.length)
				for(d = Array.prototype.slice.call(arguments, 2), ci ? e = ci.delayedCallbacks : di ? e = di : (e = di = [], setTimeout(Dc, 0)), f = function(a) {
						e.push(function() {
							return c[a].apply(null, d)
						})
					}, g = 0; g < c.length; ++g) f(g)
		}

		function Dc() {
			var b, a = di;
			for(di = null, b = 0; b < a.length; ++b) a[b]()
		}

		function Ec(a, b, c, d) {
			for(var f, e = 0; e < b.changes.length; e++) f = b.changes[e], "text" == f ? Ic(a, b) : "gutter" == f ? Kc(a, b, c, d) : "class" == f ? Jc(a, b) : "widget" == f && Lc(a, b, d);
			b.changes = null
		}

		function Fc(a) {
			return a.node == a.text && (a.node = j("div", null, null, "position: relative"), a.text.parentNode && a.text.parentNode.replaceChild(a.node, a.text), a.node.appendChild(a.text), gh && 8 > hh && (a.node.style.zIndex = 2)), a.node
		}

		function Gc(a, b) {
			var d, c = b.bgClass ? b.bgClass + " " + (b.line.bgClass || "") : b.line.bgClass;
			c && (c += " CodeMirror-linebackground"), b.background ? c ? b.background.className = c : (b.background.parentNode.removeChild(b.background), b.background = null) : c && (d = Fc(b), b.background = d.insertBefore(j("div", null, c), d.firstChild), a.display.input.setUneditable(b.background))
		}

		function Hc(a, b) {
			var c = a.display.externalMeasured;
			return c && c.line == b.line ? (a.display.externalMeasured = null, b.measure = c.measure, c.built) : qc(a, b)
		}

		function Ic(a, b) {
			var c = b.text.className,
				d = Hc(a, b);
			b.text == b.node && (b.node = d.pre), b.text.parentNode.replaceChild(d.pre, b.text), b.text = d.pre, d.bgClass != b.bgClass || d.textClass != b.textClass ? (b.bgClass = d.bgClass, b.textClass = d.textClass, Jc(a, b)) : c && (b.text.className = c)
		}

		function Jc(a, b) {
			Gc(a, b), b.line.wrapClass ? Fc(b).className = b.line.wrapClass : b.node != b.text && (b.node.className = "");
			var c = b.textClass ? b.textClass + " " + (b.line.textClass || "") : b.line.textClass;
			b.text.className = c || ""
		}

		function Kc(a, b, c, d) {
			var e, f, g, h, i, k, l;
			if(b.gutter && (b.node.removeChild(b.gutter), b.gutter = null), b.gutterBackground && (b.node.removeChild(b.gutterBackground), b.gutterBackground = null), b.line.gutterClass && (e = Fc(b), b.gutterBackground = j("div", null, "CodeMirror-gutter-background " + b.line.gutterClass, "left: " + (a.options.fixedGutter ? d.fixedPos : -d.gutterTotalWidth) + "px; width: " + d.gutterTotalWidth + "px"), a.display.input.setUneditable(b.gutterBackground), e.insertBefore(b.gutterBackground, b.text)), f = b.line.gutterMarkers, (a.options.lineNumbers || f) && (g = Fc(b), h = b.gutter = j("div", null, "CodeMirror-gutter-wrapper", "left: " + (a.options.fixedGutter ? d.fixedPos : -d.gutterTotalWidth) + "px"), a.display.input.setUneditable(h), g.insertBefore(h, b.text), b.line.gutterClass && (h.className += " " + b.line.gutterClass), !a.options.lineNumbers || f && f["CodeMirror-linenumbers"] || (b.lineNumber = h.appendChild(j("div", O(a.options, c), "CodeMirror-linenumber CodeMirror-gutter-elt", "left: " + d.gutterLeft["CodeMirror-linenumbers"] + "px; width: " + a.display.lineNumInnerWidth + "px"))), f))
				for(i = 0; i < a.options.gutters.length; ++i) k = a.options.gutters[i], l = f.hasOwnProperty(k) && f[k], l && h.appendChild(j("div", [l], "CodeMirror-gutter-elt", "left: " + d.gutterLeft[k] + "px; width: " + d.gutterWidth[k] + "px"))
		}

		function Lc(a, b, c) {
			b.alignable && (b.alignable = null);
			for(var d = b.node.firstChild, e = void 0; d; d = e) e = d.nextSibling, "CodeMirror-linewidget" == d.className && b.node.removeChild(d);
			Nc(a, b, c)
		}

		function Mc(a, b, c, d) {
			var e = Hc(a, b);
			return b.text = b.node = e.pre, e.bgClass && (b.bgClass = e.bgClass), e.textClass && (b.textClass = e.textClass), Jc(a, b), Kc(a, b, c, d), Nc(a, b, d), b.node
		}

		function Nc(a, b, c) {
			if(Oc(a, b.line, b, c, !0), b.rest)
				for(var d = 0; d < b.rest.length; d++) Oc(a, b.rest[d], b, c, !1)
		}

		function Oc(a, b, c, d, e) {
			var f, g, h, i, k;
			if(b.widgets)
				for(f = Fc(c), g = 0, h = b.widgets; g < h.length; ++g) i = h[g], k = j("div", [i.node], "CodeMirror-linewidget"), i.handleMouseEvents || k.setAttribute("cm-ignore-events", "true"), Pc(i, k, c, d), a.display.input.setUneditable(k), e && i.above ? f.insertBefore(k, c.gutter || c.text) : f.appendChild(k), Cc(i, "redraw")
		}

		function Pc(a, b, c, d) {
			if(a.noHScroll) {
				(c.alignable || (c.alignable = [])).push(b);
				var e = d.wrapperWidth;
				b.style.left = d.fixedPos + "px", a.coverGutter || (e -= d.gutterTotalWidth, b.style.paddingLeft = d.gutterTotalWidth + "px"), b.style.width = e + "px"
			}
			a.coverGutter && (b.style.zIndex = 5, b.style.position = "relative", !a.noHScroll && (b.style.marginLeft = -d.gutterTotalWidth + "px"))
		}

		function Qc(a) {
			var b, c;
			return null != a.height ? a.height : (b = a.doc.cm) ? (l(document.body, a.node) || (c = "position: relative;", a.coverGutter && (c += "margin-left: -" + b.display.gutters.offsetWidth + "px;"), a.noHScroll && (c += "width: " + b.display.wrapper.clientWidth + "px;"), i(b.display.measure, j("div", [a.node], null, c))), a.height = a.node.parentNode.offsetHeight) : 0
		}

		function Rc(a, b) {
			for(var c = Tb(b); c != a.wrapper; c = c.parentNode)
				if(!c || 1 == c.nodeType && "true" == c.getAttribute("cm-ignore-events") || c.parentNode == a.sizer && c != a.mover) return !0
		}

		function Sc(a) {
			return a.lineSpace.offsetTop
		}

		function Tc(a) {
			return a.mover.offsetHeight - a.lineSpace.offsetHeight
		}

		function Uc(a) {
			if(a.cachedPaddingH) return a.cachedPaddingH;
			var b = i(a.measure, j("pre", "x")),
				c = window.getComputedStyle ? window.getComputedStyle(b) : b.currentStyle,
				d = {
					left: parseInt(c.paddingLeft),
					right: parseInt(c.paddingRight)
				};
			return isNaN(d.left) || isNaN(d.right) || (a.cachedPaddingH = d), d
		}

		function Vc(a) {
			return Ch - a.display.nativeBarWidth
		}

		function Wc(a) {
			return a.display.scroller.clientWidth - Vc(a) - a.display.barWidth
		}

		function Xc(a) {
			return a.display.scroller.clientHeight - Vc(a) - a.display.barHeight
		}

		function Yc(a, b, c) {
			var g, h, i, j, k, d = a.options.lineWrapping,
				e = d && Wc(a);
			if(!b.measure.heights || d && b.measure.width != e) {
				if(g = b.measure.heights = [], d)
					for(b.measure.width = e, h = b.text.firstChild.getClientRects(), i = 0; i < h.length - 1; i++) j = h[i], k = h[i + 1], 2 < f(j.bottom - k.bottom) && g.push((j.bottom + k.top) / 2 - c.top);
				g.push(c.bottom - c.top)
			}
		}

		function Zc(a, b, c) {
			var d, e;
			if(a.line == b) return {
				map: a.measure.map,
				cache: a.measure.cache
			};
			for(d = 0; d < a.rest.length; d++)
				if(a.rest[d] == b) return {
					map: a.measure.maps[d],
					cache: a.measure.caches[d]
				};
			for(e = 0; e < a.rest.length; e++)
				if(L(a.rest[e]) > c) return {
					map: a.measure.maps[e],
					cache: a.measure.caches[e],
					before: !0
				}
		}

		function $c(a, b) {
			var c, d, e;
			return b = rb(b), c = L(b), d = a.display.externalMeasured = new xc(a.doc, b, c), d.lineN = c, e = d.built = qc(a, d), d.text = e.pre, i(a.display.lineMeasure, e.pre), d
		}

		function _c(a, b, c, d) {
			return cd(a, bd(a, b), c, d)
		}

		function ad(a, b) {
			if(b >= a.display.viewFrom && b < a.display.viewTo) return a.display.view[Dd(a, b)];
			var c = a.display.externalMeasured;
			return c && b >= c.lineN && b < c.lineN + c.size ? c : void 0
		}

		function bd(a, b) {
			var e, c = L(b),
				d = ad(a, c);
			return d && !d.text ? d = null : d && d.changes && (Ec(a, d, c, yd(a)), a.curOp.forceUpdate = !0), d || (d = $c(a, b)), e = Zc(d, b, c), {
				line: b,
				view: d,
				rect: null,
				map: e.map,
				cache: e.cache,
				before: e.before,
				hasHeights: !1
			}
		}

		function cd(a, b, c, d, e) {
			b.before && (c = -1);
			var g, f = c + (d || "");
			return b.cache.hasOwnProperty(f) ? g = b.cache[f] : (!b.rect && (b.rect = b.view.text.getBoundingClientRect()), !b.hasHeights && (Yc(a, b.view, b.rect), b.hasHeights = !0), g = fd(a, b, c, d), !g.bogus && (b.cache[f] = g)), {
				left: g.left,
				right: g.right,
				top: e ? g.rtop : g.top,
				bottom: e ? g.rbottom : g.bottom
			}
		}

		function dd(a, b, c) {
			for(var e, f, g, h, i, j, d = 0; d < a.length; d += 3)
				if(i = a[d], j = a[d + 1], i > b ? (f = 0, g = 1, h = "left") : j > b ? (f = b - i, g = f + 1) : (d == a.length - 3 || b == j && a[d + 3] > b) && (g = j - i, f = g - 1, b >= j && (h = "right")), null != f) {
					if(e = a[d + 2], i == j && c == (e.insertLeft ? "left" : "right") && (h = c), "left" == c && 0 == f)
						for(; d && a[d - 2] == a[d - 3] && a[d - 1].insertLeft;) e = a[(d -= 3) + 2], h = "left";
					if("right" == c && f == j - i)
						for(; d < a.length - 3 && a[d + 3] == a[d + 4] && !a[d + 5].insertLeft;) e = a[(d += 3) + 2], h = "right";
					break
				}
			return {
				node: e,
				start: f,
				end: g,
				collapse: h,
				coverStart: i,
				coverEnd: j
			}
		}

		function ed(a, b) {
			var d, e, c = ei;
			if("left" == b)
				for(d = 0; d < a.length && (c = a[d]).left == c.right; d++);
			else
				for(e = a.length - 1; e >= 0 && (c = a[e]).left == c.right; e--);
			return c
		}

		function fd(a, b, c, d) {
			var j, k, l, m, n, o, p, q, r, s, t, e = dd(b.map, c, d),
				f = e.node,
				g = e.start,
				h = e.end,
				i = e.collapse;
			if(3 == f.nodeType) {
				for(k = 0; 4 > k; k++) {
					for(; g && D(b.line.text.charAt(e.coverStart + g));) --g;
					for(; e.coverStart + h < e.coverEnd && D(b.line.text.charAt(e.coverStart + h));) ++h;
					if(j = gh && 9 > hh && 0 == g && h == e.coverEnd - e.coverStart ? f.parentNode.getBoundingClientRect() : ed(zh(f, g, h).getClientRects(), d), j.left || j.right || 0 == g) break;
					h = g, --g, i = "right"
				}
				gh && 11 > hh && (j = gd(a.display.measure, j))
			} else g > 0 && (i = d = "right"), j = a.options.lineWrapping && 1 < (l = f.getClientRects()).length ? l["right" == d ? l.length - 1 : 0] : f.getBoundingClientRect();
			for(!(gh && 9 > hh) || g || j && (j.left || j.right) || (m = f.parentNode.getClientRects()[0], j = m ? {
					left: m.left,
					right: m.left + xd(a.display),
					top: m.top,
					bottom: m.bottom
				} : ei), n = j.top - b.rect.top, o = j.bottom - b.rect.top, p = b.view.measure.heights, q = 0; q < p.length - 1 && !((n + o) / 2 < p[q]); q++);
			return r = q ? p[q - 1] : 0, s = p[q], t = {
				left: ("right" == i ? j.right : j.left) - b.rect.left,
				right: ("left" == i ? j.left : j.right) - b.rect.left,
				top: r,
				bottom: s
			}, j.left || j.right || (t.bogus = !0), a.options.singleCursorHeightPerLine || (t.rtop = n, t.rbottom = o), t
		}

		function gd(a, b) {
			if(!window.screen || null == screen.logicalXDPI || screen.logicalXDPI == screen.deviceXDPI || !Xb(a)) return b;
			var c = screen.logicalXDPI / screen.deviceXDPI,
				d = screen.logicalYDPI / screen.deviceYDPI;
			return {
				left: b.left * c,
				right: b.right * c,
				top: b.top * d,
				bottom: b.bottom * d
			}
		}

		function hd(a) {
			if(a.measure && (a.measure.cache = {}, a.measure.heights = null, a.rest))
				for(var b = 0; b < a.rest.length; b++) a.measure.caches[b] = {}
		}

		function id(a) {
			a.display.externalMeasure = null, h(a.display.lineMeasure);
			for(var b = 0; b < a.display.view.length; b++) hd(a.display.view[b])
		}

		function jd(a) {
			id(a), a.display.cachedCharWidth = a.display.cachedTextHeight = a.display.cachedPaddingH = null, a.options.lineWrapping || (a.display.maxLineChanged = !0), a.display.lineNumChars = null
		}

		function kd() {
			return kh && qh ? -(document.body.getBoundingClientRect().left - parseInt(getComputedStyle(document.body).marginLeft)) : window.pageXOffset || (document.documentElement || document.body).scrollLeft
		}

		function ld() {
			return kh && qh ? -(document.body.getBoundingClientRect().top - parseInt(getComputedStyle(document.body).marginTop)) : window.pageYOffset || (document.documentElement || document.body).scrollTop
		}

		function md(a, b, c, d, e) {
			var f, g, h, i, j;
			if(!e && b.widgets)
				for(f = 0; f < b.widgets.length; ++f) b.widgets[f].above && (g = Qc(b.widgets[f]), c.top += g, c.bottom += g);
			return "line" == d ? c : (d || (d = "local"), h = yb(b), "local" == d ? h += Sc(a.display) : h -= a.display.viewOffset, ("page" == d || "window" == d) && (i = a.display.lineSpace.getBoundingClientRect(), h += i.top + ("window" == d ? 0 : ld()), j = i.left + ("window" == d ? 0 : kd()), c.left += j, c.right += j), c.top += h, c.bottom += h, c)
		}

		function nd(a, b, c) {
			var d, e, f, g;
			return "div" == c ? b : (d = b.left, e = b.top, "page" == c ? (d -= kd(), e -= ld()) : "local" != c && c || (f = a.display.sizer.getBoundingClientRect(), d += f.left, e += f.top), g = a.display.lineSpace.getBoundingClientRect(), {
				left: d - g.left,
				top: e - g.top
			})
		}

		function od(a, b, c, d, e) {
			return d || (d = H(a.doc, b.line)), md(a, d, _c(a, d, b.ch, e), c)
		}

		function pd(a, b, c, d, e, f) {
			function g(b, g) {
				var h = cd(a, e, b, g ? "right" : "left", f);
				return g ? h.left = h.right : h.right = h.left, md(a, d, h, c)
			}

			function h(a, b, c) {
				var d = i[b],
					e = 0 != d.level % 2;
				return g(c ? a - 1 : a, e != c)
			}
			var i, j, k, l, m, n;
			return d = d || H(a.doc, b.line), e || (e = bd(a, d)), i = Db(d, a.doc.direction), j = b.ch, k = b.sticky, j >= d.text.length ? (j = d.text.length, k = "before") : 0 >= j && (j = 0, k = "after"), i ? (l = Cb(i, j, k), m = Mh, n = h(j, l, "before" == k), null != m && (n.other = h(j, m, "before" != k)), n) : g("before" == k ? j - 1 : j, "before" == k)
		}

		function qd(a, b) {
			var d, e, c = 0;
			return b = W(a.doc, b), a.options.lineWrapping || (c = xd(a.display) * b.ch), d = H(a.doc, b.line), e = yb(d) + Sc(a.display), {
				left: c,
				right: c,
				top: e,
				bottom: e + d.height
			}
		}

		function rd(a, b, c, d, e) {
			var f = P(a, b, c);
			return f.xRel = e, d && (f.outside = !0), f
		}

		function sd(a, b, c) {
			var e, f, g, h, i, j, d = a.doc;
			if(c += a.display.viewOffset, 0 > c) return rd(d.first, 0, null, !0, -1);
			if(e = M(d, c), f = d.first + d.size - 1, e > f) return rd(d.first + d.size - 1, H(d, f).text.length, null, !0, 1);
			for(0 > b && (b = 0), g = H(d, e);;) {
				if(h = vd(a, g, e, b, c), i = pb(g), j = i && i.find(0, !0), !i || !(h.ch > j.from.ch || h.ch == j.from.ch && 0 < h.xRel)) return h;
				e = L(g = j.to.line)
			}
		}

		function td(a, b, c, d) {
			var e = function(d) {
					return md(a, b, cd(a, c, d), "line")
				},
				f = b.text.length,
				g = F(function(a) {
					return e(a - 1).bottom <= d
				}, f, 0);
			return f = F(function(a) {
				return e(a).top > d
			}, g, f), {
				begin: g,
				end: f
			}
		}

		function ud(a, b, c, d) {
			var e = md(a, b, cd(a, c, d), "line").top;
			return td(a, b, c, e)
		}

		function vd(a, b, c, d, e) {
			var l, h, i, j, k, m, q, r, n, o, p, s, t;
			if(e -= yb(b), h = 0, i = b.text.length, j = bd(a, b), k = Db(b, a.doc.direction), k) {
				a.options.lineWrapping && (m = td(a, b, j, e), h = m.begin, i = m.end, m), l = new P(c, h), n = pd(a, l, "line", b, j).left, o = d > n ? 1 : -1, p = n - d;
				do {
					if(q = p, r = l, l = Hb(a, b, l, o), null == l || l.ch < h || i <= ("before" == l.sticky ? l.ch - 1 : l.ch)) {
						l = r;
						break
					}
					p = pd(a, l, "line", b, j).left - d
				} while (0 > o != 0 > p && f(p) <= f(q));
				if(f(p) > f(q)) {
					if(0 > p == 0 > q) throw new Error("Broke out of infinite loop in coordsCharInner");
					l = r
				}
			} else s = F(function(c) {
				var f = md(a, b, cd(a, j, c), "line");
				return f.top > e ? (i = g(c, i), !0) : !(f.bottom <= e || !(f.left > d) && (f.right < d || !(d - f.left < f.right - d)))
			}, h, i), s = E(b.text, s, 1), l = new P(c, s, s == i ? "before" : "after");
			return t = pd(a, l, "line", b, j), (e < t.top || t.bottom < e) && (l.outside = !0), l.xRel = d < t.left ? -1 : d > t.right ? 1 : 0, l
		}

		function wd(a) {
			var b, c;
			if(null != a.cachedTextHeight) return a.cachedTextHeight;
			if(null == gi) {
				for(gi = j("pre"), b = 0; 49 > b; ++b) gi.appendChild(document.createTextNode("x")), gi.appendChild(j("br"));
				gi.appendChild(document.createTextNode("x"))
			}
			return i(a.measure, gi), c = gi.offsetHeight / 50, c > 3 && (a.cachedTextHeight = c), h(a.measure), c || 1
		}

		function xd(a) {
			var b, c, d, e;
			return null != a.cachedCharWidth ? a.cachedCharWidth : (b = j("span", "xxxxxxxxxx"), c = j("pre", [b]), i(a.measure, c), d = b.getBoundingClientRect(), e = (d.right - d.left) / 10, e > 2 && (a.cachedCharWidth = e), e || 10)
		}

		function yd(a) {
			for(var b = a.display, c = {}, d = {}, e = b.gutters.clientLeft, f = b.gutters.firstChild, g = 0; f; f = f.nextSibling, ++g) c[a.options.gutters[g]] = f.offsetLeft + f.clientLeft + e, d[a.options.gutters[g]] = f.clientWidth;
			return {
				fixedPos: zd(b),
				gutterTotalWidth: b.gutters.offsetWidth,
				gutterLeft: c,
				gutterWidth: d,
				wrapperWidth: b.wrapper.clientWidth
			}
		}

		function zd(a) {
			return a.scroller.getBoundingClientRect().left - a.sizer.getBoundingClientRect().left
		}

		function Ad(a) {
			var b = wd(a.display),
				c = a.options.lineWrapping,
				e = c && d(5, a.display.scroller.clientWidth / xd(a.display) - 3);
			return function(d) {
				var f, g;
				if(wb(a.doc, d)) return 0;
				if(f = 0, d.widgets)
					for(g = 0; g < d.widgets.length; g++) d.widgets[g].height && (f += d.widgets[g].height);
				return c ? f + (Math.ceil(d.text.length / e) || 1) * b : f + b
			}
		}

		function Bd(a) {
			var b = a.doc,
				c = Ad(a);
			b.iter(function(a) {
				var b = c(a);
				b != a.height && K(a, b)
			})
		}

		function Cd(a, b, e, f) {
			var i, j, h, l, k, m, g = a.display;
			if(!e && "true" == Tb(b).getAttribute("cm-not-content")) return null;
			h = g.lineSpace.getBoundingClientRect();
			try {
				i = b.clientX - h.left, j = b.clientY - h.top
			} catch(a) {
				return null
			}
			return k = sd(a, i, j), f && 1 == k.xRel && (l = H(a.doc, k.line).text).length == k.ch && (m = r(l, l.length, a.options.tabSize) - l.length, k = P(k.line, d(0, c((i - Uc(a.display).left) / xd(a.display)) - m))), k
		}

		function Dd(a, b) {
			if(b >= a.display.viewTo) return null;
			if(b -= a.display.viewFrom, 0 > b) return null;
			for(var c = a.display.view, d = 0; d < c.length; d++)
				if(b -= c[d].size, 0 > b) return d
		}

		function Ed(a) {
			a.display.input.showSelection(a.display.input.prepareSelection())
		}

		function Fd(a, b) {
			var c, d, e, f, g, h, i;
			for(c = a.doc, d = {}, e = d.cursors = document.createDocumentFragment(), f = d.selection = document.createDocumentFragment(), g = 0; g < c.sel.ranges.length; g++)(!1 !== b || g != c.sel.primIndex) && (h = c.sel.ranges[g], h.from().line >= a.display.viewTo || h.to().line < a.display.viewFrom || (i = h.empty(), (i || a.options.showCursorWhenSelecting) && Gd(a, h.head, e), i || Hd(a, h, f)));
			return d
		}

		function Gd(a, b, c) {
			var g, e = pd(a, b, "div", null, null, !a.options.singleCursorHeightPerLine),
				f = c.appendChild(j("div", " ", "CodeMirror-cursor"));
			f.style.left = e.left + "px", f.style.top = e.top + "px", f.style.height = d(0, e.bottom - e.top) * a.options.cursorHeight + "px", e.other && (g = c.appendChild(j("div", " ", "CodeMirror-cursor CodeMirror-secondarycursor")), g.style.display = "", g.style.left = e.other.left + "px", g.style.top = e.other.top + "px", g.style.height = .85 * (e.other.bottom - e.other.top) + "px")
		}

		function Hd(a, b, e) {
			function f(a, b, d, e) {
				0 > b && (b = 0), b = c(b), e = c(e), k.appendChild(j("div", null, "CodeMirror-selected", "position: absolute; left: " + a + "px;\n                             top: " + b + "px; width: " + (null == d ? n - a : d) + "px;\n                             height: " + (e - b) + "px"))
			}

			function g(b, c, d) {
				function e(c, d) {
					return od(a, P(b, c), "div", g, d)
				}
				var j, k, g = H(i, b),
					h = g.text.length;
				return Bb(Db(g, i.direction), c || 0, null == d ? h : d, function(a, b, g) {
					var l, o, p, q, i = e(a, "left");
					a == b ? (l = i, o = p = i.left) : (l = e(b - 1, "right"), "rtl" == g && (q = i, i = l, l = q), o = i.left, p = l.right), null == c && 0 == a && (o = m), 3 < l.top - i.top && (f(o, i.top, null, i.bottom), o = m, i.bottom < l.top && f(o, i.bottom, null, l.top)), null == d && b == h && (p = n), (!j || i.top < j.top || i.top == j.top && i.left < j.left) && (j = i), (!k || l.bottom > k.bottom || l.bottom == k.bottom && l.right > k.right) && (k = l), m + 1 > o && (o = m), f(o, l.top, p - o, l.bottom)
				}), {
					start: j,
					end: k
				}
			}
			var q, r, s, t, u, h = a.display,
				i = a.doc,
				k = document.createDocumentFragment(),
				l = Uc(a.display),
				m = l.left,
				n = d(h.sizerWidth, Wc(a) - h.sizer.offsetLeft) - l.right,
				o = b.from(),
				p = b.to();
			o.line == p.line ? g(o.line, o.ch, p.ch) : (q = H(i, o.line), r = H(i, p.line), s = rb(q) == rb(r), t = g(o.line, o.ch, s ? q.text.length + 1 : null).end, u = g(p.line, s ? 0 : null, p.ch).start, s && (t.top < u.top - 2 ? (f(t.right, t.top, null, t.bottom), f(m, u.top, u.left, u.bottom)) : f(t.right, t.top, u.left - t.right, t.bottom)), t.bottom < u.top && f(m, t.bottom, null, u.top)), e.appendChild(k)
		}

		function Id(a) {
			var b, c;
			a.state.focused && (b = a.display, clearInterval(b.blinker), c = !0, b.cursorDiv.style.visibility = "", 0 < a.options.cursorBlinkRate ? b.blinker = setInterval(function() {
				return b.cursorDiv.style.visibility = (c = !c) ? "" : "hidden"
			}, a.options.cursorBlinkRate) : 0 > a.options.cursorBlinkRate && (b.cursorDiv.style.visibility = "hidden"))
		}

		function Jd(a) {
			a.state.focused || (a.display.input.focus(), Ld(a))
		}

		function Kd(a) {
			a.state.delayingBlurEvent = !0, setTimeout(function() {
				a.state.delayingBlurEvent && (a.state.delayingBlurEvent = !1, Md(a))
			}, 100)
		}

		function Ld(a, b) {
			a.state.delayingBlurEvent && (a.state.delayingBlurEvent = !1), "nocursor" == a.options.readOnly || (!a.state.focused && (Kb(a, "focus", a, b), a.state.focused = !0, n(a.display.wrapper, "CodeMirror-focused"), !a.curOp && a.display.selForContextMenu != a.doc.sel && (a.display.input.reset(), ih && setTimeout(function() {
				return a.display.input.reset(!0)
			}, 20)), a.display.input.receivedFocus()), Id(a))
		}

		function Md(a, b) {
			a.state.delayingBlurEvent || (a.state.focused && (Kb(a, "blur", a, b), a.state.focused = !1, yh(a.display.wrapper, "CodeMirror-focused")), clearInterval(a.display.blinker), setTimeout(function() {
				a.state.focused || (a.display.shift = !1)
			}, 150))
		}

		function Nd(a) {
			var b, c, d, e, f, g, h, i, j;
			for(b = a.display, c = b.lineDiv.offsetTop, d = 0; d < b.view.length; d++)
				if(e = b.view[d], f = void 0, !e.hidden && (gh && 8 > hh ? (g = e.node.offsetTop + e.node.offsetHeight, f = g - c, c = g) : (h = e.node.getBoundingClientRect(), f = h.bottom - h.top), i = e.line.height - f, 2 > f && (f = wd(b)), (i > .001 || -.001 > i) && (K(e.line, f), Od(e.line), e.rest)))
					for(j = 0; j < e.rest.length; j++) Od(e.rest[j])
		}

		function Od(a) {
			if(a.widgets)
				for(var b = 0; b < a.widgets.length; ++b) a.widgets[b].height = a.widgets[b].node.parentNode.offsetHeight
		}

		function Pd(a, b, c) {
			var h, i, j, k, l, f = c && null != c.top ? d(0, c.top) : a.scroller.scrollTop;
			return f = e(f - Sc(a)), h = c && null != c.bottom ? c.bottom : f + a.wrapper.clientHeight, i = M(b, f), j = M(b, h), c && c.ensure && (k = c.ensure.from.line, l = c.ensure.to.line, i > k ? (i = k, j = M(b, yb(H(b, k)) + a.wrapper.clientHeight)) : g(l, b.lastLine()) >= j && (i = M(b, yb(H(b, l)) - a.wrapper.clientHeight), j = l)), {
				from: i,
				to: d(j, i + 1)
			}
		}

		function Qd(a) {
			var d, e, f, g, h, i, b = a.display,
				c = b.view;
			if(b.alignWidgets || b.gutters.firstChild && a.options.fixedGutter) {
				for(d = zd(b) - b.scroller.scrollLeft + a.doc.scrollLeft, e = b.gutters.offsetWidth, f = d + "px", g = 0; g < c.length; g++)
					if(!c[g].hidden && (a.options.fixedGutter && (c[g].gutter && (c[g].gutter.style.left = f), c[g].gutterBackground && (c[g].gutterBackground.style.left = f)), h = c[g].alignable))
						for(i = 0; i < h.length; i++) h[i].style.left = f;
				a.options.fixedGutter && (b.gutters.style.left = d + e + "px")
			}
		}

		function Rd(a) {
			var b, c, e, f, g, h;
			return a.options.lineNumbers ? (b = a.doc, c = O(a.options, b.first + b.size - 1), e = a.display, c.length != e.lineNumChars ? (f = e.measure.appendChild(j("div", [j("div", c)], "CodeMirror-linenumber CodeMirror-gutter-elt")), g = f.firstChild.offsetWidth, h = f.offsetWidth - g, e.lineGutter.style.width = "", e.lineNumInnerWidth = d(g, e.lineGutter.offsetWidth - h) + 1, e.lineNumWidth = e.lineNumInnerWidth + h, e.lineNumChars = e.lineNumInnerWidth ? c.length : -1, e.lineGutter.style.width = e.lineNumWidth + "px", Ie(a), !0) : !1) : !1
		}

		function Sd(a, b) {
			var c, e, f, g;
			Lb(a, "scrollCursorIntoView") || (c = a.display, e = c.sizer.getBoundingClientRect(), f = null, 0 > b.top + e.top ? f = !0 : b.bottom + e.top > (window.innerHeight || document.documentElement.clientHeight) && (f = !1), null == f || oh || (g = j("div", "​", null, "position: absolute;\n                         top: " + (b.top - c.viewOffset - Sc(a.display)) + "px;\n                         height: " + (b.bottom - b.top + Vc(a) + c.barHeight) + "px;\n                         left: " + b.left + "px; width: " + d(2, b.right - b.left) + "px;"), a.display.lineSpace.appendChild(g), g.scrollIntoView(f), a.display.lineSpace.removeChild(g)))
		}

		function Td(a, b, c, e) {
			var i, h, j, k, l, m, n, o;
			for(null == e && (e = 0), h = 0; 5 > h && (j = !1, k = pd(a, b), l = c && c != b ? pd(a, c) : k, i = {
					left: g(k.left, l.left),
					top: g(k.top, l.top) - e,
					right: d(k.left, l.left),
					bottom: d(k.bottom, l.bottom) + e
				}, m = Vd(a, i), n = a.doc.scrollTop, o = a.doc.scrollLeft, null != m.scrollTop && (ae(a, m.scrollTop), 1 < f(a.doc.scrollTop - n) && (j = !0)), null != m.scrollLeft && (ce(a, m.scrollLeft), 1 < f(a.doc.scrollLeft - o) && (j = !0)), j); h++);
			return i
		}

		function Ud(a, b) {
			var c = Vd(a, b);
			null != c.scrollTop && ae(a, c.scrollTop), null != c.scrollLeft && ce(a, c.scrollLeft)
		}

		function Vd(a, b) {
			var f, h, i, j, k, l, m, n, o, p, c = a.display,
				e = wd(a.display);
			return 0 > b.top && (b.top = 0), f = a.curOp && null != a.curOp.scrollTop ? a.curOp.scrollTop : c.scroller.scrollTop, h = Xc(a), i = {}, b.bottom - b.top > h && (b.bottom = b.top + h), j = a.doc.height + Tc(c), k = b.top < e, l = b.bottom > j - e, b.top < f ? i.scrollTop = k ? 0 : b.top : b.bottom > f + h && (m = g(b.top, (l ? j : b.bottom) - h), m != f && (i.scrollTop = m)), n = a.curOp && null != a.curOp.scrollLeft ? a.curOp.scrollLeft : c.scroller.scrollLeft, o = Wc(a) - (a.options.fixedGutter ? c.gutters.offsetWidth : 0), p = b.right - b.left > o, p && (b.right = b.left + o), 10 > b.left ? i.scrollLeft = 0 : b.left < n ? i.scrollLeft = d(0, b.left - (p ? 0 : 10)) : b.right > o + n - 3 && (i.scrollLeft = b.right + (p ? 0 : 10) - o), i
		}

		function Wd(a, b) {
			null == b || ($d(a), a.curOp.scrollTop = (null == a.curOp.scrollTop ? a.doc.scrollTop : a.curOp.scrollTop) + b)
		}

		function Xd(a) {
			$d(a);
			var b = a.getCursor(),
				c = b,
				d = b;
			a.options.lineWrapping || (c = b.ch ? P(b.line, b.ch - 1) : b, d = P(b.line, b.ch + 1)), a.curOp.scrollToPos = {
				from: c,
				to: d,
				margin: a.options.cursorScrollMargin
			}
		}

		function Yd(a, b, c) {
			(null != b || null != c) && $d(a), null != b && (a.curOp.scrollLeft = b), null != c && (a.curOp.scrollTop = c)
		}

		function Zd(a, b) {
			$d(a), a.curOp.scrollToPos = b
		}

		function $d(a) {
			var c, d, b = a.curOp.scrollToPos;
			b && (a.curOp.scrollToPos = null, c = qd(a, b.from), d = qd(a, b.to), _d(a, c, d, b.margin))
		}

		function _d(a, b, c, e) {
			var f = Vd(a, {
				left: g(b.left, c.left),
				top: g(b.top, c.top) - e,
				right: d(b.right, c.right),
				bottom: d(b.bottom, c.bottom) + e
			});
			Yd(a, f.scrollLeft, f.scrollTop)
		}

		function ae(a, b) {
			2 > f(a.doc.scrollTop - b) || (!ch && Ge(a, {
				top: b
			}), be(a, b, !0), ch && Ge(a), ze(a, 100))
		}

		function be(a, b, c) {
			b = g(a.display.scroller.scrollHeight - a.display.scroller.clientHeight, b), (a.display.scroller.scrollTop != b || c) && (a.doc.scrollTop = b, a.display.scrollbars.setScrollTop(b), a.display.scroller.scrollTop != b && (a.display.scroller.scrollTop = b))
		}

		function ce(a, b, c, d) {
			b = g(b, a.display.scroller.scrollWidth - a.display.scroller.clientWidth), (c ? b == a.doc.scrollLeft : 2 > f(a.doc.scrollLeft - b)) && !d || (a.doc.scrollLeft = b, Qd(a), a.display.scroller.scrollLeft != b && (a.display.scroller.scrollLeft = b), a.display.scrollbars.setScrollLeft(b))
		}

		function de(a) {
			var b = a.display,
				d = b.gutters.offsetWidth,
				e = c(a.doc.height + Tc(a.display));
			return {
				clientHeight: b.scroller.clientHeight,
				viewHeight: b.wrapper.clientHeight,
				scrollWidth: b.scroller.scrollWidth,
				clientWidth: b.scroller.clientWidth,
				viewWidth: b.wrapper.clientWidth,
				barLeft: a.options.fixedGutter ? d : 0,
				docHeight: e,
				scrollHeight: e + Vc(a) + b.barHeight,
				nativeBarWidth: b.nativeBarWidth,
				gutterWidth: d
			}
		}

		function ee(a, b) {
			var c, d, e;
			for(b || (b = de(a)), c = a.display.barWidth, d = a.display.barHeight, fe(a, b), e = 0; 4 > e && c != a.display.barWidth || d != a.display.barHeight; e++) c != a.display.barWidth && a.options.lineWrapping && Nd(a), fe(a, de(a)), c = a.display.barWidth, d = a.display.barHeight
		}

		function fe(a, b) {
			var c = a.display,
				d = c.scrollbars.update(b);
			c.sizer.style.paddingRight = (c.barWidth = d.right) + "px", c.sizer.style.paddingBottom = (c.barHeight = d.bottom) + "px", c.heightForcer.style.borderBottom = d.bottom + "px solid transparent", d.right && d.bottom ? (c.scrollbarFiller.style.display = "block", c.scrollbarFiller.style.height = d.bottom + "px", c.scrollbarFiller.style.width = d.right + "px") : c.scrollbarFiller.style.display = "", d.bottom && a.options.coverGutterNextToScrollbar && a.options.fixedGutter ? (c.gutterFiller.style.display = "block", c.gutterFiller.style.height = d.bottom + "px", c.gutterFiller.style.width = b.gutterWidth + "px") : c.gutterFiller.style.display = ""
		}

		function ge(a) {
			a.display.scrollbars && (a.display.scrollbars.clear(), a.display.scrollbars.addClass && yh(a.display.wrapper, a.display.scrollbars.addClass)), a.display.scrollbars = new ii[a.options.scrollbarStyle](function(b) {
				a.display.wrapper.insertBefore(b, a.display.scrollbarFiller), Ph(b, "mousedown", function() {
					a.state.focused && setTimeout(function() {
						return a.display.input.focus()
					}, 0)
				}), b.setAttribute("cm-not-content", "true")
			}, function(b, c) {
				"horizontal" == c ? ce(a, b) : ae(a, b)
			}, a), a.display.scrollbars.addClass && n(a.display.wrapper, a.display.scrollbars.addClass)
		}

		function he(a) {
			a.curOp = {
				cm: a,
				viewChanged: !1,
				startHeight: a.doc.height,
				forceUpdate: !1,
				updateInput: null,
				typing: !1,
				changeObjs: null,
				cursorActivityHandlers: null,
				cursorActivityCalled: 0,
				selectionChanged: !1,
				updateMaxLine: !1,
				scrollLeft: null,
				scrollTop: null,
				scrollToPos: null,
				focus: !1,
				id: ++ji
			}, zc(a.curOp)
		}

		function ie(a) {
			var b = a.curOp;
			Bc(b, function(a) {
				for(var b = 0; b < a.ops.length; b++) a.ops[b].cm.curOp = null;
				je(a)
			})
		}

		function je(a) {
			var b, c, d, e, f, g;
			for(b = a.ops, c = 0; c < b.length; c++) ke(b[c]);
			for(d = 0; d < b.length; d++) le(b[d]);
			for(e = 0; e < b.length; e++) me(b[e]);
			for(f = 0; f < b.length; f++) ne(b[f]);
			for(g = 0; g < b.length; g++) oe(b[g])
		}

		function ke(a) {
			var b = a.cm,
				c = b.display;
			Be(b), a.updateMaxLine && Ab(b), a.mustUpdate = a.viewChanged || a.forceUpdate || null != a.scrollTop || a.scrollToPos && (a.scrollToPos.from.line < c.viewFrom || a.scrollToPos.to.line >= c.viewTo) || c.maxLineChanged && b.options.lineWrapping, a.update = a.mustUpdate && new ki(b, a.mustUpdate && {
				top: a.scrollTop,
				ensure: a.scrollToPos
			}, a.forceUpdate)
		}

		function le(a) {
			a.updatedDisplay = a.mustUpdate && Ee(a.cm, a.update)
		}

		function me(a) {
			var b = a.cm,
				c = b.display;
			a.updatedDisplay && Nd(b), a.barMeasure = de(b), c.maxLineChanged && !b.options.lineWrapping && (a.adjustWidthTo = _c(b, c.maxLine, c.maxLine.text.length).left + 3, b.display.sizerWidth = a.adjustWidthTo, a.barMeasure.scrollWidth = d(c.scroller.clientWidth, c.sizer.offsetLeft + a.adjustWidthTo + Vc(b) + b.display.barWidth), a.maxScrollLeft = d(0, c.sizer.offsetLeft + a.adjustWidthTo - Wc(b))), (a.updatedDisplay || a.selectionChanged) && (a.preparedSelection = c.input.prepareSelection(a.focus))
		}

		function ne(a) {
			var c, b = a.cm;
			null != a.adjustWidthTo && (b.display.sizer.style.minWidth = a.adjustWidthTo + "px", a.maxScrollLeft < b.doc.scrollLeft && ce(b, g(b.display.scroller.scrollLeft, a.maxScrollLeft), !0), b.display.maxLineChanged = !1), c = a.focus && a.focus == m() && (!document.hasFocus || document.hasFocus()), a.preparedSelection && b.display.input.showSelection(a.preparedSelection, c), (a.updatedDisplay || a.startHeight != b.doc.height) && ee(b, a.barMeasure), a.updatedDisplay && Je(b, a.barMeasure), a.selectionChanged && Id(b), b.state.focused && a.updateInput && b.display.input.reset(a.typing), c && Jd(a.cm)
		}

		function oe(a) {
			var e, f, g, h, i, b = a.cm,
				c = b.display,
				d = b.doc;
			if(a.updatedDisplay && Fe(b, a.update), null != c.wheelStartX && (null != a.scrollTop || null != a.scrollLeft || a.scrollToPos) && (c.wheelStartX = c.wheelStartY = null), null != a.scrollTop && be(b, a.scrollTop, a.forceScroll), null != a.scrollLeft && ce(b, a.scrollLeft, !0, !0), a.scrollToPos && (e = Td(b, W(d, a.scrollToPos.from), W(d, a.scrollToPos.to), a.scrollToPos.margin), Sd(b, e)), f = a.maybeHiddenMarkers, g = a.maybeUnhiddenMarkers, f)
				for(h = 0; h < f.length; ++h) f[h].lines.length || Kb(f[h], "hide");
			if(g)
				for(i = 0; i < g.length; ++i) g[i].lines.length && Kb(g[i], "unhide");
			c.wrapper.offsetHeight && (d.scrollTop = b.display.scroller.scrollTop), a.changeObjs && Kb(b, "changes", b, a.changeObjs), a.update && a.update.finish()
		}

		function pe(a, b) {
			if(a.curOp) return b();
			he(a);
			try {
				return b()
			} finally {
				ie(a)
			}
		}

		function qe(a, b) {
			return function() {
				if(a.curOp) return b.apply(a, arguments);
				he(a);
				try {
					return b.apply(a, arguments)
				} finally {
					ie(a)
				}
			}
		}

		function re(a) {
			return function() {
				if(this.curOp) return a.apply(this, arguments);
				he(this);
				try {
					return a.apply(this, arguments)
				} finally {
					ie(this)
				}
			}
		}

		function se(a) {
			return function() {
				var b = this.cm;
				if(!b || b.curOp) return a.apply(this, arguments);
				he(b);
				try {
					return a.apply(this, arguments)
				} finally {
					ie(b)
				}
			}
		}

		function te(a, b, c, d) {
			var e, f, g, h, i, j;
			null == b && (b = a.doc.first), null == c && (c = a.doc.first + a.doc.size), d || (d = 0), e = a.display, d && c < e.viewTo && (null == e.updateLineNumbers || e.updateLineNumbers > b) && (e.updateLineNumbers = b), a.curOp.viewChanged = !0, b >= e.viewTo ? Lh && ub(a.doc, b) < e.viewTo && ve(a) : c <= e.viewFrom ? Lh && vb(a.doc, c + d) > e.viewFrom ? ve(a) : (e.viewFrom += d, e.viewTo += d) : b <= e.viewFrom && c >= e.viewTo ? ve(a) : b <= e.viewFrom ? (f = we(a, c, c + d, 1), f ? (e.view = e.view.slice(f.index), e.viewFrom = f.lineN, e.viewTo += d) : ve(a)) : c >= e.viewTo ? (g = we(a, b, b, -1), g ? (e.view = e.view.slice(0, g.index), e.viewTo = g.lineN) : ve(a)) : (h = we(a, b, b, -1), i = we(a, c, c + d, 1), h && i ? (e.view = e.view.slice(0, h.index).concat(yc(a, h.lineN, i.lineN)).concat(e.view.slice(i.index)), e.viewTo += d) : ve(a)), j = e.externalMeasured, j && (c < j.lineN ? j.lineN += d : b < j.lineN + j.size && (e.externalMeasured = null))
		}

		function ue(a, b, c) {
			var d, e, f, g;
			a.curOp.viewChanged = !0, d = a.display, e = a.display.externalMeasured, e && b >= e.lineN && b < e.lineN + e.size && (d.externalMeasured = null), b < d.viewFrom || b >= d.viewTo || (f = d.view[Dd(a, b)], null != f.node && (g = f.changes || (f.changes = []), -1 == s(g, c) && g.push(c)))
		}

		function ve(a) {
			a.display.viewFrom = a.display.viewTo = a.doc.first, a.display.view = [], a.display.viewOffset = 0
		}

		function we(a, b, c, d) {
			var g, h, i, e = Dd(a, b),
				f = a.display.view;
			if(!Lh || c == a.doc.first + a.doc.size) return {
				index: e,
				lineN: c
			};
			for(h = a.display.viewFrom, i = 0; e > i; i++) h += f[i].size;
			if(h != b) {
				if(d > 0) {
					if(e == f.length - 1) return null;
					g = h + f[e].size - b, e++
				} else g = h - b;
				b += g, c += g
			}
			for(; ub(a.doc, c) != c;) {
				if(e == (0 > d ? 0 : f.length - 1)) return null;
				c += d * f[e - (0 > d ? 1 : 0)].size, e += d
			}
			return {
				index: e,
				lineN: c
			}
		}

		function xe(a, b, c) {
			var d = a.display,
				e = d.view;
			0 == e.length || b >= d.viewTo || c <= d.viewFrom ? (d.view = yc(a, b, c), d.viewFrom = b) : (d.viewFrom > b ? d.view = yc(a, b, d.viewFrom).concat(d.view) : d.viewFrom < b && (d.view = d.view.slice(Dd(a, b))), d.viewFrom = b, d.viewTo < c ? d.view = d.view.concat(yc(a, d.viewTo, c)) : d.viewTo > c && (d.view = d.view.slice(0, Dd(a, c)))), d.viewTo = c
		}

		function ye(a) {
			for(var e, b = a.display.view, c = 0, d = 0; d < b.length; d++) e = b[d], e.hidden || e.node && !e.changes || ++c;
			return c
		}

		function ze(a, b) {
			a.doc.mode.startState && a.doc.frontier < a.display.viewTo && a.state.highlight.set(b, p(Ae, a))
		}

		function Ae(a) {
			var c, d, e, b = a.doc;
			b.frontier < b.first && (b.frontier = b.first), b.frontier >= a.display.viewTo || (c = +new Date + a.options.workTime, d = ac(b.mode, fc(a, b.frontier)), e = [], b.iter(b.frontier, g(b.first + b.size, a.display.viewTo + 500), function(f) {
				var g, h, i, j, k, l, m;
				if(b.frontier >= a.display.viewFrom) {
					for(g = f.styles, h = f.text.length > a.options.maxHighlightLength, i = dc(a, f, h ? ac(b.mode, d) : d, !0), f.styles = i.styles, j = f.styleClasses, k = i.classes, k ? f.styleClasses = k : j && (f.styleClasses = null), l = !g || g.length != f.styles.length || j != k && (!j || !k || j.bgClass != k.bgClass || j.textClass != k.textClass), m = 0; !l && m < g.length; ++m) l = g[m] != f.styles[m];
					l && e.push(b.frontier), f.stateAfter = h ? d : ac(b.mode, d)
				} else f.text.length <= a.options.maxHighlightLength && gc(a, f.text, d), f.stateAfter = 0 == b.frontier % 5 ? ac(b.mode, d) : null;
				return ++b.frontier, +new Date > c ? (ze(a, a.options.workDelay), !0) : void 0
			}), e.length && pe(a, function() {
				for(var b = 0; b < e.length; b++) ue(a, e[b], "text")
			}))
		}

		function Be(a) {
			var b = a.display;
			!b.scrollbarsClipped && b.scroller.offsetWidth && (b.nativeBarWidth = b.scroller.offsetWidth - b.scroller.clientWidth, b.heightForcer.style.height = Vc(a) + "px", b.sizer.style.marginBottom = -b.nativeBarWidth + "px", b.sizer.style.borderRightWidth = Vc(a) + "px", b.scrollbarsClipped = !0)
		}

		function Ce(a) {
			var b, c, d;
			return a.hasFocus() ? null : (b = m(), b && l(a.display.lineDiv, b) ? (c = {
				activeElt: b
			}, window.getSelection && (d = window.getSelection(), d.anchorNode && d.extend && l(a.display.lineDiv, d.anchorNode) && (c.anchorNode = d.anchorNode, c.anchorOffset = d.anchorOffset, c.focusNode = d.focusNode, c.focusOffset = d.focusOffset)), c) : null)
		}

		function De(a) {
			if(a && a.activeElt && a.activeElt != m() && (a.activeElt.focus(), a.anchorNode && l(document.body, a.anchorNode) && l(document.body, a.focusNode))) {
				var b = window.getSelection(),
					c = document.createRange();
				c.setEnd(a.anchorNode, a.anchorOffset), c.collapse(!1), b.removeAllRanges(), b.addRange(c), b.extend(a.focusNode, a.focusOffset)
			}
		}

		function Ee(a, b) {
			var f, i, j, k, l, m, c = a.display,
				e = a.doc;
			return b.editorIsHidden ? (ve(a), !1) : !b.force && b.visible.from >= c.viewFrom && b.visible.to <= c.viewTo && (null == c.updateLineNumbers || c.updateLineNumbers >= c.viewTo) && c.renderedView == c.view && 0 == ye(a) ? !1 : (Rd(a) && (ve(a), b.dims = yd(a)), f = e.first + e.size, i = d(b.visible.from - a.options.viewportMargin, e.first), j = g(f, b.visible.to + a.options.viewportMargin), c.viewFrom < i && 20 > i - c.viewFrom && (i = d(e.first, c.viewFrom)), c.viewTo > j && 20 > c.viewTo - j && (j = g(f, c.viewTo)), Lh && (i = ub(a.doc, i), j = vb(a.doc, j)), k = i != c.viewFrom || j != c.viewTo || c.lastWrapHeight != b.wrapperHeight || c.lastWrapWidth != b.wrapperWidth, xe(a, i, j), c.viewOffset = yb(H(a.doc, c.viewFrom)), a.display.mover.style.top = c.viewOffset + "px", l = ye(a), k || 0 != l || b.force || c.renderedView != c.view || !(null == c.updateLineNumbers || c.updateLineNumbers >= c.viewTo) ? (m = Ce(a), l > 4 && (c.lineDiv.style.display = "none"), He(a, c.updateLineNumbers, b.dims), l > 4 && (c.lineDiv.style.display = ""), c.renderedView = c.view, De(m), h(c.cursorDiv), h(c.selectionDiv), c.gutters.style.height = c.sizer.style.minHeight = 0, k && (c.lastWrapHeight = b.wrapperHeight, c.lastWrapWidth = b.wrapperWidth, ze(a, 400)), c.updateLineNumbers = null, !0) : !1)
		}

		function Fe(a, b) {
			var c, d, e;
			for(c = b.viewport, d = !0;
				(d && a.options.lineWrapping && b.oldDisplayWidth != Wc(a) || (c && null != c.top && (c = {
					top: g(a.doc.height + Tc(a.display) - Xc(a), c.top)
				}), b.visible = Pd(a.display, a.doc, c), !(b.visible.from >= a.display.viewFrom && b.visible.to <= a.display.viewTo))) && Ee(a, b); d = !1) Nd(a), e = de(a), Ed(a), ee(a, e), Je(a, e);
			b.signal(a, "update", a), (a.display.viewFrom != a.display.reportedViewFrom || a.display.viewTo != a.display.reportedViewTo) && (b.signal(a, "viewportChange", a, a.display.viewFrom, a.display.viewTo), a.display.reportedViewFrom = a.display.viewFrom, a.display.reportedViewTo = a.display.viewTo)
		}

		function Ge(a, b) {
			var d, c = new ki(a, b);
			Ee(a, c) && (Nd(a), Fe(a, c), d = de(a), Ed(a), ee(a, d), Je(a, d), c.finish())
		}

		function He(a, b, c) {
			function d(b) {
				var c = b.nextSibling;
				return ih && sh && a.display.currentWheelTarget == b ? b.style.display = "none" : b.parentNode.removeChild(b), c
			}
			var m, e, f, g, i, j, k, l, n, o;
			for(e = a.display, f = a.options.lineNumbers, g = e.lineDiv, i = g.firstChild, j = e.view, k = e.viewFrom, l = 0; l < j.length; l++) {
				if(m = j[l], m.hidden);
				else if(m.node && m.node.parentNode == g) {
					for(; i != m.node;) i = d(i);
					o = f && null != b && k >= b && m.lineNumber, m.changes && (-1 < s(m.changes, "gutter") && (o = !1), Ec(a, m, k, c)), o && (h(m.lineNumber), m.lineNumber.appendChild(document.createTextNode(O(a.options, k)))), i = m.node.nextSibling
				} else n = Mc(a, m, k, c), g.insertBefore(n, i);
				k += m.size
			}
			for(; i;) i = d(i)
		}

		function Ie(a) {
			var b = a.display.gutters.offsetWidth;
			a.display.sizer.style.marginLeft = b + "px"
		}

		function Je(a, b) {
			a.display.sizer.style.minHeight = b.docHeight + "px", a.display.heightForcer.style.top = b.docHeight + "px", a.display.gutters.style.height = b.docHeight + a.display.barHeight + Vc(a) + "px"
		}

		function Ke(a) {
			var d, e, f, b = a.display.gutters,
				c = a.options.gutters;
			for(h(b), d = 0; d < c.length; ++d) e = c[d], f = b.appendChild(j("div", null, "CodeMirror-gutter " + e)), "CodeMirror-linenumbers" == e && (a.display.lineGutter = f, f.style.width = (a.display.lineNumWidth || 1) + "px");
			b.style.display = d ? "" : "none", Ie(a)
		}

		function Le(a) {
			var b = s(a.gutters, "CodeMirror-linenumbers"); - 1 == b && a.lineNumbers ? a.gutters = a.gutters.concat(["CodeMirror-linenumbers"]) : b > -1 && !a.lineNumbers && (a.gutters = a.gutters.slice(0), a.gutters.splice(b, 1))
		}

		function Me(a) {
			var b = a.wheelDeltaX,
				c = a.wheelDeltaY;
			return null == b && a.detail && a.axis == a.HORIZONTAL_AXIS && (b = a.detail), null == c && a.detail && a.axis == a.VERTICAL_AXIS ? c = a.detail : null == c && (c = a.wheelDelta), {
				x: b,
				y: c
			}
		}

		function Ne(a) {
			var b = Me(a);
			return b.x *= mi, b.y *= mi, b
		}

		function Oe(a, b) {
			var l, m, n, o, p, q, c = Me(b),
				e = c.x,
				f = c.y,
				h = a.display,
				i = h.scroller,
				j = i.scrollWidth > i.clientWidth,
				k = i.scrollHeight > i.clientHeight;
			if(e && j || f && k) {
				if(f && sh && ih) a: for(l = b.target, m = h.view; l != i; l = l.parentNode)
					for(n = 0; n < m.length; n++)
						if(m[n].node == l) {
							a.display.currentWheelTarget = l;
							break a
						}
				if(e && !ch && !lh && null != mi) return f && k && ae(a, d(0, i.scrollTop + f * mi)), ce(a, d(0, i.scrollLeft + e * mi)), (!f || f && k) && Pb(b), void(h.wheelStartX = null);
				f && null != mi && (o = f * mi, p = a.doc.scrollTop, q = p + h.wrapper.clientHeight, 0 > o ? p = d(0, p + o - 50) : q = g(a.doc.height, q + o + 50), Ge(a, {
					top: p,
					bottom: q
				})), 20 > li && (null == h.wheelStartX ? (h.wheelStartX = i.scrollLeft, h.wheelStartY = i.scrollTop, h.wheelDX = e, h.wheelDY = f, setTimeout(function() {
					if(null != h.wheelStartX) {
						var a = i.scrollLeft - h.wheelStartX,
							b = i.scrollTop - h.wheelStartY,
							c = b && h.wheelDY && b / h.wheelDY || a && h.wheelDX && a / h.wheelDX;
						h.wheelStartX = h.wheelStartY = null, c && (mi = (mi * li + c) / (li + 1), ++li)
					}
				}, 200)) : (h.wheelDX += e, h.wheelDY += f))
			}
		}

		function Pe(a, b) {
			var d, e, f, g, h, i, c = a[b];
			for(a.sort(function(a, b) {
					return Q(a.from(), b.from())
				}), b = s(a, c), d = 1; d < a.length; d++) e = a[d], f = a[d - 1], 0 <= Q(f.to(), e.from()) && (g = U(f.from(), e.from()), h = T(f.to(), e.to()), i = f.empty() ? e.from() == e.head : f.from() == f.head, b >= d && --b, a.splice(--d, 2, new oi(i ? h : g, i ? g : h)));
			return new ni(a, b)
		}

		function Qe(a, b) {
			return new ni([new oi(a, b || a)], 0)
		}

		function Re(a) {
			return a.text ? P(a.from.line + a.text.length - 1, v(a.text).length + (1 == a.text.length ? a.from.ch : 0)) : a.to
		}

		function Se(a, b) {
			if(0 > Q(a, b.from)) return a;
			if(0 >= Q(a, b.to)) return Re(b);
			var c = a.line + b.text.length - (b.to.line - b.from.line) - 1,
				d = a.ch;
			return a.line == b.to.line && (d += Re(b).ch - b.to.ch), P(c, d)
		}

		function Te(a, b) {
			for(var e, c = [], d = 0; d < a.sel.ranges.length; d++) e = a.sel.ranges[d], c.push(new oi(Se(e.anchor, b), Se(e.head, b)));
			return Pe(c, a.sel.primIndex)
		}

		function Ue(a, b, c) {
			return a.line == b.line ? P(c.line, a.ch - b.ch + c.ch) : P(c.line + (a.line - b.line), a.ch)
		}

		function Ve(a, b, c) {
			var d, e, f, g, h, i, j, k, l;
			for(d = [], e = P(a.first, 0), f = e, g = 0; g < b.length; g++) h = b[g], i = Ue(h.from, e, f), j = Ue(Re(h), e, f), e = h.to, f = j, "around" == c ? (k = a.sel.ranges[g], l = 0 > Q(k.head, k.anchor), d[g] = new oi(l ? j : i, l ? i : j)) : d[g] = new oi(i, i);
			return new ni(d, a.sel.primIndex)
		}

		function We(a) {
			a.doc.mode = $b(a.options, a.doc.modeOption), Xe(a)
		}

		function Xe(a) {
			a.doc.iter(function(a) {
				a.stateAfter && (a.stateAfter = null), a.styles && (a.styles = null)
			}), a.doc.frontier = a.doc.first, ze(a, 100), a.state.modeGen++, a.curOp && te(a)
		}

		function Ye(a, b) {
			return 0 == b.from.ch && 0 == b.to.ch && "" == v(b.text) && (!a.cm || a.cm.options.wholeLineUpdateBefore)
		}

		function Ze(a, b, c, d) {
			function e(a) {
				return c ? c[a] : null
			}

			function f(a, c, e) {
				nc(a, c, e, d), Cc(a, "change", a, b)
			}

			function g(a, b) {
				for(var c = [], f = a; b > f; ++f) c.push(new _h(j[f], e(f), d));
				return c
			}
			var p, q, r, h = b.from,
				i = b.to,
				j = b.text,
				k = H(a, h.line),
				l = H(a, i.line),
				m = v(j),
				n = e(j.length - 1),
				o = i.line - h.line;
			b.full ? (a.insert(0, g(0, j.length)), a.remove(j.length, a.size - j.length)) : Ye(a, b) ? (p = g(0, j.length - 1), f(l, l.text, n), o && a.remove(h.line, o), p.length && a.insert(h.line, p)) : k == l ? 1 == j.length ? f(k, k.text.slice(0, h.ch) + m + k.text.slice(i.ch), n) : (q = g(1, j.length - 1), q.push(new _h(m + k.text.slice(i.ch), n, d)), f(k, k.text.slice(0, h.ch) + j[0], e(0)), a.insert(h.line + 1, q)) : 1 == j.length ? (f(k, k.text.slice(0, h.ch) + j[0] + l.text.slice(i.ch), e(0)), a.remove(h.line + 1, o)) : (f(k, k.text.slice(0, h.ch) + j[0], e(0)), f(l, m + l.text.slice(i.ch), n), r = g(1, j.length - 1), o > 1 && a.remove(h.line + 1, o - 1), a.insert(h.line + 1, r)), Cc(a, "change", a, b)
		}

		function $e(a, b, c) {
			function d(a, e, f) {
				var h, g, i;
				if(a.linked)
					for(g = 0; g < a.linked.length; ++g) h = a.linked[g], h.doc != e && (i = f && h.sharedHist, (!c || i) && (b(h.doc, i), d(h.doc, a, i)))
			}
			d(a, null, !0)
		}

		function _e(a, b) {
			if(b.cm) throw new Error("This document is already in use.");
			a.doc = b, b.cm = a, Bd(a), We(a), af(a), a.options.lineWrapping || Ab(a), a.options.mode = b.modeOption, te(a)
		}

		function af(a) {
			("rtl" == a.doc.direction ? n : yh)(a.display.lineDiv, "CodeMirror-rtl")
		}

		function bf(a) {
			pe(a, function() {
				af(a), te(a)
			})
		}

		function cf(a) {
			this.done = [], this.undone = [], this.undoDepth = 1 / 0, this.lastModTime = this.lastSelTime = 0, this.lastOp = this.lastSelOp = null, this.lastOrigin = this.lastSelOrigin = null, this.generation = this.maxGeneration = a || 1
		}

		function df(a, b) {
			var c = {
				from: S(b.from),
				to: Re(b),
				text: I(a, b.from, b.to)
			};
			return lf(a, c, b.from.line, b.to.line + 1), $e(a, function(a) {
				return lf(a, c, b.from.line, b.to.line + 1)
			}, !0), c
		}

		function ef(a) {
			for(; a.length;) {
				var b = v(a);
				if(!b.ranges) break;
				a.pop()
			}
		}

		function ff(a, b) {
			return b ? (ef(a.done), v(a.done)) : a.done.length && !v(a.done).ranges ? v(a.done) : 1 < a.done.length && !a.done[a.done.length - 2].ranges ? (a.done.pop(), v(a.done)) : void 0
		}

		function gf(a, b, c, d) {
			var g, h, f, i, e = a.history;
			if(e.undone.length = 0, f = +new Date, (e.lastOp == d || e.lastOrigin == b.origin && b.origin && ("+" == b.origin.charAt(0) && a.cm && e.lastModTime > f - a.cm.options.historyEventDelay || "*" == b.origin.charAt(0))) && (g = ff(e, e.lastOp == d))) h = v(g.changes), 0 == Q(b.from, b.to) && 0 == Q(b.from, h.to) ? h.to = Re(b) : g.changes.push(df(a, b));
			else
				for(i = v(e.done), i && i.ranges || kf(a.sel, e.done), g = {
						changes: [df(a, b)],
						generation: e.generation
					}, e.done.push(g); e.done.length > e.undoDepth;) e.done.shift(), e.done[0].ranges || e.done.shift();
			e.done.push(c), e.generation = ++e.maxGeneration, e.lastModTime = e.lastSelTime = f, e.lastOp = e.lastSelOp = d, e.lastOrigin = e.lastSelOrigin = b.origin, h || Kb(a, "historyAdded")
		}

		function hf(a, b, c, d) {
			var e = b.charAt(0);
			return "*" == e || "+" == e && c.ranges.length == d.ranges.length && c.somethingSelected() == d.somethingSelected() && new Date - a.history.lastSelTime <= (a.cm ? a.cm.options.historyEventDelay : 500)
		}

		function jf(a, b, c, d) {
			var e = a.history,
				f = d && d.origin;
			c == e.lastSelOp || f && e.lastSelOrigin == f && (e.lastModTime == e.lastSelTime && e.lastOrigin == f || hf(a, f, v(e.done), b)) ? e.done[e.done.length - 1] = b : kf(b, e.done), e.lastSelTime = +new Date, e.lastSelOrigin = f, e.lastSelOp = c, d && !1 !== d.clearRedo && ef(e.undone)
		}

		function kf(a, b) {
			var c = v(b);
			c && c.ranges && c.equals(a) || b.push(a)
		}

		function lf(a, b, c, e) {
			var f = b["spans_" + a.id],
				h = 0;
			a.iter(d(a.first, c), g(a.first + a.size, e), function(c) {
				c.markedSpans && ((f || (f = b["spans_" + a.id] = {}))[h] = c.markedSpans), ++h
			})
		}

		function mf(a) {
			if(!a) return null;
			for(var c, b = 0; b < a.length; ++b) a[b].marker.explicitlyCleared ? c || (c = a.slice(0, b)) : c && c.push(a[b]);
			return c ? c.length ? c : null : a
		}

		function nf(a, b) {
			var d, e, c = b["spans_" + a.id];
			if(!c) return null;
			for(d = [], e = 0; e < b.text.length; ++e) d.push(mf(c[e]));
			return d
		}

		function of (a, b) {
			var e, f, g, i, h, j, c = nf(a, b),
				d = fb(a, b);
			if(!c) return d;
			if(!d) return c;
			for(e = 0; e < c.length; ++e)
				if(f = c[e], g = d[e], f && g) a: for(h = 0; h < g.length; ++h) {
					for(i = g[h], j = 0; j < f.length; ++j)
						if(f[j].marker == i.marker) continue a;
					f.push(i)
				} else g && (c[e] = g);
			return c
		}

		function pf(a, b, c) {
			var f, d, e, g, h, i, j, k, l;
			for(d = [], e = 0; e < a.length; ++e)
				if(f = a[e], f.ranges) d.push(c ? ni.prototype.deepCopy.call(f) : f);
				else
					for(g = f.changes, h = [], d.push({
							changes: h
						}), i = 0; i < g.length; ++i)
						if(j = g[i], k = void 0, h.push({
								from: j.from,
								to: j.to,
								text: j.text
							}), b)
							for(l in j)(k = l.match(/^spans_(\d+)$/)) && -1 < s(b, +k[1]) && (v(h)[l] = j[l], delete j[l]);
			return d
		}

		function qf(a, b, c, d) {
			var e, f;
			return a.cm && a.cm.display.shift || a.extend ? (e = b.anchor, d && (f = 0 > Q(c, e), f == 0 > Q(d, e) ? f != 0 > Q(c, d) && (c = d) : (e = c, c = d)), new oi(e, c)) : new oi(d || c, c)
		}

		function rf(a, b, c, d) {
			xf(a, new ni([qf(a, a.sel.primary(), b, c)], 0), d)
		}

		function sf(a, b, c) {
			var d, e, f;
			for(d = [], e = 0; e < a.sel.ranges.length; e++) d[e] = qf(a, a.sel.ranges[e], b[e], null);
			f = Pe(d, a.sel.primIndex), xf(a, f, c)
		}

		function tf(a, b, c, d) {
			var e = a.sel.ranges.slice(0);
			e[b] = c, xf(a, Pe(e, a.sel.primIndex), d)
		}

		function uf(a, b, c, d) {
			xf(a, Qe(b, c), d)
		}

		function vf(a, b, c) {
			var d = {
				ranges: b.ranges,
				update: function(b) {
					var d, c = this;
					for(this.ranges = [], d = 0; d < b.length; d++) c.ranges[d] = new oi(W(a, b[d].anchor), W(a, b[d].head))
				},
				origin: c && c.origin
			};
			return Kb(a, "beforeSelectionChange", a, d), a.cm && Kb(a.cm, "beforeSelectionChange", a.cm, d), d.ranges == b.ranges ? b : Pe(d.ranges, d.ranges.length - 1)
		}

		function wf(a, b, c) {
			var d = a.history.done,
				e = v(d);
			e && e.ranges ? (d[d.length - 1] = b, yf(a, b, c)) : xf(a, b, c)
		}

		function xf(a, b, c) {
			yf(a, b, c), jf(a, a.sel, a.cm ? a.cm.curOp.id : 0 / 0, c)
		}

		function yf(a, b, c) {
			(Nb(a, "beforeSelectionChange") || a.cm && Nb(a.cm, "beforeSelectionChange")) && (b = vf(a, b, c));
			var d = c && c.bias || (0 > Q(b.primary().head, a.sel.primary().head) ? -1 : 1);
			zf(a, Bf(a, b, d, !0)), !(c && !1 === c.scroll) && a.cm && Xd(a.cm)
		}

		function zf(a, b) {
			b.equals(a.sel) || (a.sel = b, a.cm && (a.cm.curOp.updateInput = a.cm.curOp.selectionChanged = !0, Mb(a.cm)), Cc(a, "cursorActivity", a))
		}

		function Af(a) {
			zf(a, Bf(a, a.sel, null, !1))
		}

		function Bf(a, b, c, d) {
			var f, e, g, h, i, j;
			for(e = 0; e < b.ranges.length; e++) g = b.ranges[e], h = b.ranges.length == a.sel.ranges.length && a.sel.ranges[e], i = Df(a, g.anchor, h && h.anchor, c, d), j = Df(a, g.head, h && h.head, c, d), (f || i != g.anchor || j != g.head) && (!f && (f = b.ranges.slice(0, e)), f[e] = new oi(i, j));
			return f ? Pe(f, b.primIndex) : b
		}

		function Cf(a, b, c, d, e) {
			var g, h, i, j, k, l, f = H(a, b.line);
			if(f.markedSpans)
				for(g = 0; g < f.markedSpans.length; ++g)
					if(h = f.markedSpans[g], i = h.marker, (null == h.from || (i.inclusiveLeft ? h.from <= b.ch : h.from < b.ch)) && (null == h.to || (i.inclusiveRight ? h.to >= b.ch : h.to > b.ch))) {
						if(e && (Kb(i, "beforeCursorEnter"), i.explicitlyCleared)) {
							if(f.markedSpans) {
								--g;
								continue
							}
							break
						}
						if(!i.atomic) continue;
						return c && (j = i.find(0 > d ? 1 : -1), k = void 0, (0 > d ? i.inclusiveRight : i.inclusiveLeft) && (j = Ef(a, j, -d, j && j.line == b.line ? f : null)), j && j.line == b.line && (k = Q(j, c)) && (0 > d ? 0 > k : k > 0)) ? Cf(a, j, b, d, e) : (l = i.find(0 > d ? -1 : 1), (0 > d ? i.inclusiveLeft : i.inclusiveRight) && (l = Ef(a, l, d, l.line == b.line ? f : null)), l ? Cf(a, l, b, d, e) : null)
					}
			return b
		}

		function Df(a, b, c, d, e) {
			var f = d || 1,
				g = Cf(a, b, c, f, e) || !e && Cf(a, b, c, f, !0) || Cf(a, b, c, -f, e) || !e && Cf(a, b, c, -f, !0);
			return g ? g : (a.cantEdit = !0, P(a.first, 0))
		}

		function Ef(a, b, c, d) {
			return 0 > c && 0 == b.ch ? b.line > a.first ? W(a, P(b.line - 1)) : null : c > 0 && b.ch == (d || H(a, b.line)).text.length ? b.line < a.first + a.size - 1 ? P(b.line + 1, 0) : null : new P(b.line, b.ch + c)
		}

		function Ff(a) {
			a.setSelection(P(a.firstLine(), 0), P(a.lastLine()), Eh)
		}

		function Gf(a, b, c) {
			var d = {
				canceled: !1,
				from: b.from,
				to: b.to,
				text: b.text,
				origin: b.origin,
				cancel: function() {
					return d.canceled = !0
				}
			};
			return c && (d.update = function(b, c, e, f) {
				b && (d.from = W(a, b)), c && (d.to = W(a, c)), e && (d.text = e), void 0 !== f && (d.origin = f)
			}), Kb(a, "beforeChange", a, d), a.cm && Kb(a.cm, "beforeChange", a.cm, d), d.canceled ? null : {
				from: d.from,
				to: d.to,
				text: d.text,
				origin: d.origin
			}
		}

		function Hf(a, b, c) {
			var d, e;
			if(a.cm) {
				if(!a.cm.curOp) return qe(a.cm, Hf)(a, b, c);
				if(a.cm.state.suppressEdits) return
			}
			if(!(Nb(a, "beforeChange") || a.cm && Nb(a.cm, "beforeChange")) || (b = Gf(a, b, !0)))
				if(d = Kh && !c && hb(a, b.from, b.to))
					for(e = d.length - 1; e >= 0; --e) If(a, {
						from: d[e].from,
						to: d[e].to,
						text: e ? [""] : b.text
					});
				else If(a, b)
		}

		function If(a, b) {
			var c, d;
			(1 != b.text.length || "" != b.text[0] || 0 != Q(b.from, b.to)) && (c = Te(a, b), gf(a, b, c, a.cm ? a.cm.curOp.id : 0 / 0), Lf(a, b, c, fb(a, b)), d = [], $e(a, function(a, c) {
				c || -1 != s(d, a.history) || (Qf(a.history, b), d.push(a.history)), Lf(a, b, null, fb(a, b))
			}))
		}

		function Jf(a, b, c) {
			var i, d, e, f, g, h, j, n, k, l, m;
			if(!a.cm || !a.cm.state.suppressEdits || c) {
				for(d = a.history, e = a.sel, f = "undo" == b ? d.done : d.undone, g = "undo" == b ? d.undone : d.done, h = 0; h < f.length && (i = f[h], c ? !i.ranges || i.equals(a.sel) : !!i.ranges); h++);
				if(h != f.length) {
					for(d.lastOrigin = d.lastSelOrigin = null; i = f.pop(), i.ranges;) {
						if(kf(i, g), c && !i.equals(a.sel)) return void xf(a, i, {
							clearRedo: !1
						});
						e = i
					}
					for(j = [], kf(e, g), g.push({
							changes: j,
							generation: d.generation
						}), d.generation = i.generation || ++d.maxGeneration, k = Nb(a, "beforeChange") || a.cm && Nb(a.cm, "beforeChange"), l = function(c) {
							var e, g, d = i.changes[c];
							return d.origin = b, k && !Gf(a, d, !1) ? (f.length = 0, {}) : (j.push(df(a, d)), e = c ? Te(a, d) : v(f), Lf(a, d, e, of (a, d)), !c && a.cm && a.cm.scrollIntoView({
								from: d.from,
								to: Re(d)
							}), g = [], $e(a, function(a, b) {
								b || -1 != s(g, a.history) || (Qf(a.history, d), g.push(a.history)), Lf(a, d, null, of (a, d))
							}), void 0)
						}, m = i.changes.length - 1; m >= 0; --m)
						if(n = l(m)) return n.v
				}
			}
		}

		function Kf(a, b) {
			if(0 != b && (a.first += b, a.sel = new ni(w(a.sel.ranges, function(a) {
					return new oi(P(a.anchor.line + b, a.anchor.ch), P(a.head.line + b, a.head.ch))
				}), a.sel.primIndex), a.cm)) {
				te(a.cm, a.first, a.first - b, b);
				for(var c = a.cm.display, d = c.viewFrom; d < c.viewTo; d++) ue(a.cm, d, "gutter")
			}
		}

		function Lf(a, b, c, d) {
			var e, f;
			return a.cm && !a.cm.curOp ? qe(a.cm, Lf)(a, b, c, d) : b.to.line < a.first ? void Kf(a, b.text.length - 1 - (b.to.line - b.from.line)) : (b.from.line > a.lastLine() || (b.from.line < a.first && (e = b.text.length - 1 - (a.first - b.from.line), Kf(a, e), b = {
				from: P(a.first, 0),
				to: P(b.to.line + e, b.to.ch),
				text: [v(b.text)],
				origin: b.origin
			}), f = a.lastLine(), b.to.line > f && (b = {
				from: b.from,
				to: P(f, H(a, f).text.length),
				text: [b.text[0]],
				origin: b.origin
			}), b.removed = I(a, b.from, b.to), c || (c = Te(a, b)), a.cm ? Mf(a.cm, b, d) : Ze(a, b, d), yf(a, c, Eh)), void 0)
		}

		function Mf(a, b, c) {
			var k, l, m, n, d = a.doc,
				e = a.display,
				f = b.from,
				h = b.to,
				i = !1,
				j = f.line;
			a.options.lineWrapping || (j = L(rb(H(d, f.line))), d.iter(j, h.line + 1, function(a) {
				return a == e.maxLine ? (i = !0, !0) : void 0
			})), -1 < d.sel.contains(b.from, b.to) && Mb(a), Ze(d, b, c, Ad(a)), a.options.lineWrapping || (d.iter(j, f.line + b.text.length, function(a) {
				var b = zb(a);
				b > e.maxLineLength && (e.maxLine = a, e.maxLineLength = b, e.maxLineChanged = !0, i = !1)
			}), i && (a.curOp.updateMaxLine = !0)), d.frontier = g(d.frontier, f.line), ze(a, 400), k = b.text.length - (h.line - f.line) - 1, b.full ? te(a) : f.line != h.line || 1 != b.text.length || Ye(a.doc, b) ? te(a, f.line, h.line + 1, k) : ue(a, f.line, "text"), l = Nb(a, "changes"), m = Nb(a, "change"), (m || l) && (n = {
				from: f,
				to: h,
				text: b.text,
				removed: b.removed,
				origin: b.origin
			}, m && Cc(a, "change", a, n), l && (a.curOp.changeObjs || (a.curOp.changeObjs = [])).push(n)), a.display.selForContextMenu = null
		}

		function Nf(a, b, c, d, e) {
			if(d || (d = c), 0 > Q(d, c)) {
				var f = d;
				d = c, c = f
			}
			"string" == typeof b && (b = a.splitLines(b)), Hf(a, {
				from: c,
				to: d,
				text: b,
				origin: e
			})
		}

		function Of(a, b, c, d) {
			c < a.line ? a.line += d : b < a.line && (a.line = b, a.ch = 0)
		}

		function Pf(a, b, c, d) {
			var e, f, g, h, j, i;
			for(e = 0; e < a.length; ++e)
				if(f = a[e], g = !0, f.ranges)
					for(f.copied || (f = a[e] = f.deepCopy(), f.copied = !0), h = 0; h < f.ranges.length; h++) Of(f.ranges[h].anchor, b, c, d), Of(f.ranges[h].head, b, c, d);
				else {
					for(i = 0; i < f.changes.length; ++i)
						if(j = f.changes[i], c < j.from.line) j.from = P(j.from.line + d, j.from.ch), j.to = P(j.to.line + d, j.to.ch);
						else if(b <= j.to.line) {
						g = !1;
						break
					}
					g || (a.splice(0, e + 1), e = 0)
				}
		}

		function Qf(a, b) {
			var c = b.from.line,
				d = b.to.line,
				e = b.text.length - (d - c) - 1;
			Pf(a.done, c, d, e), Pf(a.undone, c, d, e)
		}

		function Rf(a, b, c, d) {
			var e = b,
				f = b;
			return "number" == typeof b ? f = H(a, V(a, b)) : e = L(b), null == e ? null : (d(f, e) && a.cm && ue(a.cm, e, c), f)
		}

		function Sf(a, b, c) {
			yb(b) < (a.curOp && a.curOp.scrollTop || a.doc.scrollTop) && Wd(a, c)
		}

		function Tf(a, b, c, e) {
			var f = new ri(a, c, e),
				h = a.cm;
			return h && f.noHScroll && (h.display.alignWidgets = !0), Rf(a, b, "widget", function(b) {
				var e, c = b.widgets || (b.widgets = []);
				return null == f.insertAt ? c.push(f) : c.splice(g(c.length - 1, d(0, f.insertAt)), 0, f), f.line = b, h && !wb(a, b) && (e = yb(b) < a.scrollTop, K(b, b.height + Qc(f)), e && Wd(h, f.height), h.curOp.forceUpdate = !0), !0
			}), Cc(h, "lineWidgetAdded", h, f, "number" == typeof b ? b : L(b)), f
		}

		function Uf(a, b, c, d, e) {
			var f, g, j, h, i, l;
			if(d && d.shared) return Vf(a, b, c, d, e);
			if(a.cm && !a.cm.curOp) return qe(a.cm, Uf)(a, b, c, d, e);
			if(f = new ti(a, e), g = Q(b, c), d && q(d, f, !1), g > 0 || 0 == g && !1 !== f.clearWhenEmpty) return f;
			if(f.replacedWith && (f.collapsed = !0, f.widgetNode = k("span", [f.replacedWith], "CodeMirror-widget"), !d.handleMouseEvents && f.widgetNode.setAttribute("cm-ignore-events", "true"), d.insertLeft && (f.widgetNode.insertLeft = !0)), f.collapsed) {
				if(qb(a, b.line, b, c, f) || b.line != c.line && qb(a, c.line, b, c, f)) throw new Error("Inserting collapsed marker partially overlapping an existing one");
				$()
			}
			if(f.addToHistory && gf(a, {
					from: b,
					to: c,
					origin: "markText"
				}, a.sel, 0 / 0), h = b.line, i = a.cm, a.iter(h, c.line + 1, function(a) {
					i && f.collapsed && !i.options.lineWrapping && rb(a) == i.display.maxLine && (j = !0), f.collapsed && h != b.line && K(a, 0), cb(a, new _(f, h == b.line ? b.ch : null, h == c.line ? c.ch : null)), ++h
				}), f.collapsed && a.iter(b.line, c.line + 1, function(b) {
					wb(a, b) && K(b, 0)
				}), f.clearOnEnter && Ph(f, "beforeCursorEnter", function() {
					return f.clear()
				}), f.readOnly && (Z(), (a.history.done.length || a.history.undone.length) && a.clearHistory()), f.collapsed && (f.id = ++si, f.atomic = !0), i) {
				if(j && (i.curOp.updateMaxLine = !0), f.collapsed) te(i, b.line, c.line + 1);
				else if(f.className || f.title || f.startStyle || f.endStyle || f.css)
					for(l = b.line; l <= c.line; l++) ue(i, l, "text");
				f.atomic && Af(i.doc), Cc(i, "markerAdded", i, f)
			}
			return f
		}

		function Vf(a, b, c, d, e) {
			d = q(d), d.shared = !1;
			var f = [Uf(a, b, c, d, e)],
				g = f[0],
				h = d.widgetNode;
			return $e(a, function(a) {
				h && (d.widgetNode = h.cloneNode(!0)), f.push(Uf(a, W(a, b), W(a, c), d, e));
				for(var i = 0; i < a.linked.length; ++i)
					if(a.linked[i].isParent) return;
				g = v(f)
			}), new ui(f, g)
		}

		function Wf(a) {
			return a.findMarks(P(a.first, 0), a.clipPos(P(a.lastLine())), function(a) {
				return a.parent
			})
		}

		function Xf(a, b) {
			var c, d, e, f, g, h;
			for(c = 0; c < b.length; c++) d = b[c], e = d.find(), f = a.clipPos(e.from), g = a.clipPos(e.to), Q(f, g) && (h = Uf(a, f, g, d.primary, d.primary.type), d.markers.push(h), h.parent = d)
		}

		function Yf(a) {
			for(var b = function(b) {
					var f, e, c = a[b],
						d = [c.primary.doc];
					for($e(c.primary.doc, function(a) {
							return d.push(a)
						}), e = 0; e < c.markers.length; e++) f = c.markers[e], -1 == s(d, f.doc) && (f.parent = null, c.markers.splice(e--, 1))
				}, c = 0; c < a.length; c++) b(c)
		}

		function Zf(a) {
			var c, d, e, f, g, h, i, j, k, l, b = this;
			if(ag(b), !(Lb(b, a) || Rc(b.display, a)) && (Pb(a), gh && (xi = +new Date), c = Cd(b, a, !0), d = a.dataTransfer.files, c && !b.isReadOnly()))
				if(d && d.length && window.FileReader && window.File)
					for(e = d.length, f = Array(e), g = 0, h = function(a, d) {
							if(!b.options.allowDropFileTypes || -1 != s(b.options.allowDropFileTypes, a.type)) {
								var h = new FileReader;
								h.onload = qe(b, function() {
									var i, a = h.result;
									/[\x00-\x08\x0e-\x1f]{2}/.test(a) && (a = ""), f[d] = a, ++g == e && (c = W(b.doc, c), i = {
										from: c,
										to: c,
										text: b.doc.splitLines(f.join(b.doc.lineSeparator())),
										origin: "paste"
									}, Hf(b.doc, i), wf(b.doc, Qe(c, Re(i))))
								}), h.readAsText(a)
							}
						}, i = 0; e > i; ++i) h(d[i], i);
				else {
					if(b.state.draggingText && -1 < b.doc.sel.contains(c)) return b.state.draggingText(a), void setTimeout(function() {
						return b.display.input.focus()
					}, 20);
					try {
						if(j = a.dataTransfer.getData("Text")) {
							if(b.state.draggingText && !b.state.draggingText.copy && (k = b.listSelections()), yf(b.doc, Qe(c, c)), k)
								for(l = 0; l < k.length; ++l) Nf(b.doc, "", k[l].anchor, k[l].head, "drag");
							b.replaceSelection(j, "around", "paste"), b.display.input.focus()
						}
					} catch(a) {}
				}
		}

		function $f(a, b) {
			if(gh && (!a.state.draggingText || 100 > +new Date - xi)) return void Sb(b);
			if(!Lb(a, b) && !Rc(a.display, b) && (b.dataTransfer.setData("Text", a.getSelection()), b.dataTransfer.effectAllowed = "copyMove", b.dataTransfer.setDragImage && !mh)) {
				var c = j("img", null, null, "position: fixed; left: 0; top: 0;");
				c.src = "", lh && (c.width = c.height = 1, a.display.wrapper.appendChild(c), c._top = c.offsetTop), b.dataTransfer.setDragImage(c, 0, 0), lh && c.parentNode.removeChild(c)
			}
		}

		function _f(a, b) {
			var d, c = Cd(a, b);
			c && (d = document.createDocumentFragment(), Gd(a, c, d), a.display.dragCursor || (a.display.dragCursor = j("div", null, "CodeMirror-cursors CodeMirror-dragcursors"), a.display.lineSpace.insertBefore(a.display.dragCursor, a.display.cursorDiv)), i(a.display.dragCursor, d))
		}

		function ag(a) {
			a.display.dragCursor && (a.display.lineSpace.removeChild(a.display.dragCursor), a.display.dragCursor = null)
		}

		function bg(a) {
			if(document.body.getElementsByClassName)
				for(var d, b = document.body.getElementsByClassName("CodeMirror"), c = 0; c < b.length; c++) d = b[c].CodeMirror, d && a(d)
		}

		function cg() {
			yi || (dg(), yi = !0)
		}

		function dg() {
			var a;
			Ph(window, "resize", function() {
				null == a && (a = setTimeout(function() {
					a = null, bg(eg)
				}, 100))
			}), Ph(window, "blur", function() {
				return bg(Md)
			})
		}

		function eg(a) {
			var b = a.display;
			b.lastWrapHeight == b.wrapper.clientHeight && b.lastWrapWidth == b.wrapper.clientWidth || (b.cachedCharWidth = b.cachedTextHeight = b.cachedPaddingH = null, b.scrollbarsClipped = !1, a.setSize())
		}

		function fg(a) {
			var d, e, f, g, h, c, b = a.split(/-(?!$)/);
			for(a = b[b.length - 1], c = 0; c < b.length - 1; c++)
				if(h = b[c], /^(cmd|meta|m)$/i.test(h)) g = !0;
				else if(/^a(lt)?$/i.test(h)) d = !0;
			else if(/^(c|ctrl|control)$/i.test(h)) e = !0;
			else {
				if(!/^s(hift)?$/i.test(h)) throw new Error("Unrecognized modifier name: " + h);
				f = !0
			}
			return d && (a = "Alt-" + a), e && (a = "Ctrl-" + a), g && (a = "Cmd-" + a), f && (a = "Shift-" + a), a
		}

		function gg(a) {
			var c, d, e, f, g, h, i, j, b = {};
			for(c in a)
				if(a.hasOwnProperty(c)) {
					if(d = a[c], /^(name|fallthrough|(de|at)tach)$/.test(c)) continue;
					if("..." == d) {
						delete a[c];
						continue
					}
					for(e = w(c.split(" "), fg), f = 0; f < e.length; f++)
						if(g = void 0, h = void 0, f == e.length - 1 ? (h = e.join(" "), g = d) : (h = e.slice(0, f + 1).join(" "), g = "..."), i = b[h]) {
							if(i != g) throw new Error("Inconsistent bindings for " + h)
						} else b[h] = g;
					delete a[c]
				}
			for(j in b) a[j] = b[j];
			return a
		}

		function hg(a, b, c, d) {
			var e, g, f;
			if(b = kg(b), e = b.call ? b.call(a, d) : b[a], !1 === e) return "nothing";
			if("..." === e) return "multi";
			if(null != e && c(e)) return "handled";
			if(b.fallthrough) {
				if("[object Array]" != Object.prototype.toString.call(b.fallthrough)) return hg(a, b.fallthrough, c, d);
				for(f = 0; f < b.fallthrough.length; f++)
					if(g = hg(a, b.fallthrough[f], c, d)) return g
			}
		}

		function ig(a) {
			var b = "string" == typeof a ? a : zi[a.keyCode];
			return "Ctrl" == b || "Alt" == b || "Shift" == b || "Mod" == b
		}

		function jg(a, b) {
			if(lh && 34 == a.keyCode && a.char) return !1;
			var c = zi[a.keyCode],
				d = c;
			return null == d || a.altGraphKey ? !1 : (a.altKey && "Alt" != c && (d = "Alt-" + d), (wh ? a.metaKey : a.ctrlKey) && "Ctrl" != c && (d = "Ctrl-" + d), (wh ? a.ctrlKey : a.metaKey) && "Cmd" != c && (d = "Cmd-" + d), !b && a.shiftKey && "Shift" != c && (d = "Shift-" + d), d)
		}

		function kg(a) {
			return "string" == typeof a ? Di[a] : a
		}

		function lg(a, b) {
			var f, c, d, e, g;
			for(c = a.doc.sel.ranges, d = [], e = 0; e < c.length; e++) {
				for(f = b(c[e]); d.length && 0 >= Q(f.from, v(d).to);)
					if(g = d.pop(), 0 > Q(g.from, f.from)) {
						f.from = g.from;
						break
					}
				d.push(f)
			}
			pe(a, function() {
				for(var b = d.length - 1; b >= 0; b--) Nf(a.doc, "", d[b].from, d[b].to, "+delete");
				Xd(a)
			})
		}

		function mg(a, b) {
			var c = H(a.doc, b),
				d = rb(c);
			return d != c && (b = L(d)), Gb(!0, a, d, b, 1)
		}

		function ng(a, b) {
			var c = H(a.doc, b),
				d = sb(c);
			return d != c && (b = L(d)), Gb(!0, a, c, b, -1)
		}

		function og(a, b) {
			var g, h, c = mg(a, b.line),
				e = H(a.doc, c.line),
				f = Db(e, a.doc.direction);
			return f && 0 != f[0].level ? c : (g = d(0, e.text.search(/\S/)), h = b.line == c.line && b.ch <= g && b.ch, P(c.line, h ? 0 : g, c.sticky))
		}

		function pg(a, b, c) {
			if("string" == typeof b && (b = Ei[b], !b)) return !1;
			a.display.input.ensurePolled();
			var d = a.display.shift,
				e = !1;
			try {
				a.isReadOnly() && (a.state.suppressEdits = !0), c && (a.display.shift = !1), e = b(a) != Dh
			} finally {
				a.display.shift = d, a.state.suppressEdits = !1
			}
			return e
		}

		function qg(a, b, c) {
			for(var e, d = 0; d < a.state.keyMaps.length; d++)
				if(e = hg(b, a.state.keyMaps[d], c, a)) return e;
			return a.options.extraKeys && hg(b, a.options.extraKeys, c, a) || hg(b, a.options.keyMap, c, a)
		}

		function rg(a, b, c, d) {
			var f, e = a.state.keySeq;
			if(e) {
				if(ig(b)) return "handled";
				Fi.set(50, function() {
					a.state.keySeq == e && (a.state.keySeq = null, a.display.input.reset())
				}), b = e + " " + b
			}
			return f = qg(a, b, d), "multi" == f && (a.state.keySeq = b), "handled" == f && Cc(a, "keyHandled", a, b, c), ("handled" == f || "multi" == f) && (Pb(c), Id(a)), e && !f && /\'$/.test(b) ? (Pb(c), !0) : !!f
		}

		function sg(a, b) {
			var c = jg(b, !0);
			return !!c && (b.shiftKey && !a.state.keySeq ? rg(a, "Shift-" + c, b, function(b) {
				return pg(a, b, !0)
			}) || rg(a, c, b, function(b) {
				return("string" == typeof b ? /^go[A-Z]/.test(b) : b.motion) ? pg(a, b) : void 0
			}) : rg(a, c, b, function(b) {
				return pg(a, b)
			}))
		}

		function tg(a, b, c) {
			return rg(a, "'" + c + "'", b, function(b) {
				return pg(a, b, !0)
			})
		}

		function ug(a) {
			var c, d, b = this;
			b.curOp.focus = m(), Lb(b, a) || (gh && 11 > hh && 27 == a.keyCode && (a.returnValue = !1), c = a.keyCode, b.display.shift = 16 == c || a.shiftKey, d = sg(b, a), lh && (Gi = d ? c : null, !d && 88 == c && !Th && (sh ? a.metaKey : a.ctrlKey) && b.replaceSelection("", null, "cut")), 18 != c || /\bCodeMirror-crosshair\b/.test(b.display.lineDiv.className) || vg(b))
		}

		function vg(a) {
			function b(a) {
				18 != a.keyCode && a.altKey || (yh(c, "CodeMirror-crosshair"), Jb(document, "keyup", b), Jb(document, "mouseover", b))
			}
			var c = a.display.lineDiv;
			n(c, "CodeMirror-crosshair"), Ph(document, "keyup", b), Ph(document, "mouseover", b)
		}

		function wg(a) {
			16 == a.keyCode && (this.doc.sel.shift = !1), Lb(this, a)
		}

		function xg(a) {
			var d, e, f, c = this;
			if(!(Rc(c.display, a) || Lb(c, a) || a.ctrlKey && !a.altKey || sh && a.metaKey)) {
				if(d = a.keyCode, e = a.charCode, lh && d == Gi) return Gi = null, void Pb(a);
				lh && (!a.which || 10 > a.which) && sg(c, a) || (f = b(null == e ? d : e), "\b" == f || tg(c, a, f) || c.display.input.onKeyPress(a))
			}
		}

		function yg(a) {
			var d, b = this,
				c = b.display;
			if(!(Lb(b, a) || c.activeTouch && c.input.supportsTouch())) {
				if(c.input.ensurePolled(), c.shift = a.shiftKey, Rc(c, a)) return void(ih || (c.scroller.draggable = !1, setTimeout(function() {
					return c.scroller.draggable = !0
				}, 100)));
				if(!Dg(b, a)) switch(d = Cd(b, a), window.focus(), Ub(a)) {
					case 1:
						b.state.selectingText ? b.state.selectingText(a) : d ? zg(b, a, d) : Tb(a) == c.scroller && Pb(a);
						break;
					case 2:
						ih && (b.state.lastMiddleDown = +new Date), d && rf(b.doc, d), setTimeout(function() {
							return c.input.focus()
						}, 20), Pb(a);
						break;
					case 3:
						xh ? Eg(b, a) : Kd(b)
				}
			}
		}

		function zg(a, b, c) {
			var e, d, h, f, g;
			gh ? setTimeout(p(Jd, a), 0) : a.curOp.focus = m(), d = +new Date, Li && Li.time > d - 400 && 0 == Q(Li.pos, c) ? e = "triple" : Ki && Ki.time > d - 400 && 0 == Q(Ki.pos, c) ? (e = "double", Li = {
				time: d,
				pos: c
			}) : (e = "single", Ki = {
				time: d,
				pos: c
			}), f = a.doc.sel, g = sh ? b.metaKey : b.ctrlKey, a.options.dragDrop && Qh && !a.isReadOnly() && "single" == e && -1 < (h = f.contains(c)) && (0 > Q((h = f.ranges[h]).from(), c) || 0 < c.xRel) && (0 < Q(h.to(), c) || 0 > c.xRel) ? Ag(a, b, c, g) : Bg(a, b, c, e, g)
		}

		function Ag(a, b, c, d) {
			var e = a.display,
				g = !1,
				h = qe(a, function(b) {
					ih && (e.scroller.draggable = !1), a.state.draggingText = !1, Jb(document, "mouseup", h), Jb(document, "mousemove", i), Jb(e.scroller, "dragstart", j), Jb(e.scroller, "drop", h), g || (Pb(b), !d && rf(a.doc, c), ih || gh && 9 == hh ? setTimeout(function() {
						document.body.focus(), e.input.focus()
					}, 20) : e.input.focus())
				}),
				i = function(a) {
					g = g || 10 <= f(b.clientX - a.clientX) + f(b.clientY - a.clientY)
				},
				j = function() {
					return g = !0
				};
			ih && (e.scroller.draggable = !0), a.state.draggingText = h, h.copy = sh ? b.altKey : b.ctrlKey, e.scroller.dragDrop && e.scroller.dragDrop(), Ph(document, "mouseup", h), Ph(document, "mousemove", i), Ph(e.scroller, "dragstart", j), Ph(e.scroller, "drop", h), Kd(a), setTimeout(function() {
				return e.input.focus()
			}, 20)
		}

		function Bg(a, b, c, e, f) {
			function h(b) {
				var f, h, i, j, k, m, o, s, u, w, x, y, z, A, B;
				if(0 != Q(v, b))
					if(v = b, "rect" == e) {
						for(f = [], h = a.options.tabSize, i = r(H(l, c.line).text, c.ch, h), j = r(H(l, b.line).text, b.ch, h), k = g(i, j), m = d(i, j), o = g(c.line, b.line), s = g(a.lastLine(), d(c.line, b.line)); s >= o; o++) u = H(l, o).text, w = t(u, k, h), k == m ? f.push(new oi(P(o, w), P(o, w))) : u.length > w && f.push(new oi(P(o, w), P(o, t(u, m, h))));
						f.length || f.push(new oi(c, c)), xf(l, Pe(n.ranges.slice(0, q).concat(f), q), {
							origin: "*mouse",
							scroll: !1
						}), a.scrollIntoView(b)
					} else x = p, y = x.anchor, z = b, "single" != e && (A = "double" == e ? a.findWordAt(b) : new oi(P(b.line, 0), W(l, P(b.line + 1, 0))), 0 < Q(A.anchor, y) ? (z = A.head, y = U(x.from(), A.anchor)) : (z = A.anchor, y = T(x.to(), A.head))), B = n.ranges.slice(0), B[q] = new oi(W(l, y), z), xf(l, Pe(B, q), Fh)
			}

			function i(b) {
				var f, g, c = ++x,
					d = Cd(a, b, !0, "rect" == e);
				d && (0 != Q(d, v) ? (a.curOp.focus = m(), h(d), f = Pd(k, l), (d.line >= f.to || d.line < f.from) && setTimeout(qe(a, function() {
					x == c && i(b)
				}), 150)) : (g = b.clientY < w.top ? -20 : b.clientY > w.bottom ? 20 : 0, g && setTimeout(qe(a, function() {
					x != c || (k.scroller.scrollTop += g, i(b))
				}), 50)))
			}

			function j(b) {
				a.state.selectingText = !1, x = 1 / 0, Pb(b), k.input.focus(), Jb(document, "mousemove", y), Jb(document, "mouseup", z), l.history.lastSelOrigin = null
			}
			var p, q, n, o, s, u, v, w, x, y, z, k = a.display,
				l = a.doc;
			Pb(b), n = l.sel, o = n.ranges, f && !b.shiftKey ? (q = l.sel.contains(c), p = q > -1 ? o[q] : new oi(c, c)) : (p = l.sel.primary(), q = l.sel.primIndex), (th ? b.shiftKey && b.metaKey : b.altKey) ? (e = "rect", f || (p = new oi(c, c)), c = Cd(a, b, !0, !0), q = -1) : "double" == e ? (s = a.findWordAt(c), p = a.display.shift || l.extend ? qf(l, p, s.anchor, s.head) : s) : "triple" == e ? (u = new oi(P(c.line, 0), W(l, P(c.line + 1, 0))), p = a.display.shift || l.extend ? qf(l, p, u.anchor, u.head) : u) : p = qf(l, p, c), f ? -1 == q ? (q = o.length, xf(l, Pe(o.concat([p]), q), {
				scroll: !1,
				origin: "*mouse"
			})) : 1 < o.length && o[q].empty() && "single" == e && !b.shiftKey ? (xf(l, Pe(o.slice(0, q).concat(o.slice(q + 1)), 0), {
				scroll: !1,
				origin: "*mouse"
			}), n = l.sel) : tf(l, q, p, Fh) : (q = 0, xf(l, new ni([p], 0), Fh), n = l.sel), v = c, w = k.wrapper.getBoundingClientRect(), x = 0, y = qe(a, function(a) {
				Ub(a) ? i(a) : j(a)
			}), z = qe(a, j), a.state.selectingText = z, Ph(document, "mousemove", y), Ph(document, "mouseup", z)
		}

		function Cg(a, b, c, d) {
			var f, g, h, i, k, j, l, m;
			try {
				f = b.clientX, g = b.clientY
			} catch(a) {
				return !1
			}
			if(f >= e(a.display.gutters.getBoundingClientRect().right)) return !1;
			if(d && Pb(b), h = a.display, i = h.lineDiv.getBoundingClientRect(), g > i.bottom || !Nb(a, c)) return Rb(b);
			for(g -= i.top - h.viewOffset, j = 0; j < a.options.gutters.length; ++j)
				if(k = h.gutters.childNodes[j], k && k.getBoundingClientRect().right >= f) return l = M(a.doc, g), m = a.options.gutters[j], Kb(a, c, a, l, m, b), Rb(b)
		}

		function Dg(a, b) {
			return Cg(a, b, "gutterClick", !0)
		}

		function Eg(a, b) {
			Rc(a.display, b) || Fg(a, b) || Lb(a, b, "contextmenu") || a.display.input.onContextMenu(b)
		}

		function Fg(a, b) {
			return !!Nb(a, "gutterContextMenu") && Cg(a, b, "gutterContextMenu", !1)
		}

		function Gg(a) {
			a.display.wrapper.className = a.display.wrapper.className.replace(/\s*cm-s-\S+/g, "") + a.options.theme.replace(/(^|\s)\s*/g, " cm-s-"), jd(a)
		}

		function Hg(a) {
			Ke(a), te(a), Qd(a)
		}

		function Ig(a, b, c) {
			if(!b != !(c && c != Hi)) {
				var d = a.display.dragFunctions,
					e = b ? Ph : Jb;
				e(a.display.scroller, "dragstart", d.start), e(a.display.scroller, "dragenter", d.enter), e(a.display.scroller, "dragover", d.over), e(a.display.scroller, "dragleave", d.leave), e(a.display.scroller, "drop", d.drop)
			}
		}

		function Jg(a) {
			a.options.lineWrapping ? (n(a.display.wrapper, "CodeMirror-wrap"), a.display.sizer.style.minWidth = "", a.display.sizerWidth = null) : (yh(a.display.wrapper, "CodeMirror-wrap"), Ab(a)), Bd(a), te(a), jd(a), setTimeout(function() {
				return ee(a)
			}, 100)
		}

		function Kg(a, b) {
			var d, e, f, g, h, c = this;
			if(!(this instanceof Kg)) return new Kg(a, b);
			this.options = b = b ? q(b) : {}, q(Ii, b, !1), Le(b), d = b.value, "string" == typeof d && (d = new wi(d, b.mode, null, b.lineSeparator, b.direction)), this.doc = d, e = new Kg.inputStyles[b.inputStyle](this), f = this.display = new G(a, d, e);
			for(g in f.wrapper.CodeMirror = this, Ke(this), Gg(this), b.lineWrapping && (this.display.wrapper.className += " CodeMirror-wrap"), ge(this), this.state = {
					keyMaps: [],
					overlays: [],
					modeGen: 0,
					overwrite: !1,
					delayingBlurEvent: !1,
					focused: !1,
					suppressEdits: !1,
					pasteIncoming: !1,
					cutIncoming: !1,
					selectingText: !1,
					draggingText: !1,
					highlight: new Bh,
					keySeq: null,
					specialChars: null
				}, b.autofocus && !rh && f.input.focus(), gh && 11 > hh && setTimeout(function() {
					return c.display.input.reset(!0)
				}, 20), Lg(this), cg(), he(this), this.curOp.forceUpdate = !0, _e(this, d), b.autofocus && !rh || this.hasFocus() ? setTimeout(p(Ld, this), 20) : Md(this), Ji) Ji.hasOwnProperty(g) && Ji[g](c, b[g], Hi);
			for(Rd(this), b.finishInit && b.finishInit(this), h = 0; h < Mi.length; ++h) Mi[h](c);
			ie(this), ih && b.lineWrapping && "optimizelegibility" == getComputedStyle(f.lineDiv).textRendering && (f.lineDiv.style.textRendering = "auto")
		}

		function Lg(a) {
			function b() {
				e.activeTouch && (g = setTimeout(function() {
					return e.activeTouch = null
				}, 1e3), f = e.activeTouch, f.end = +new Date)
			}

			function c(a) {
				if(1 != a.touches.length) return !1;
				var b = a.touches[0];
				return 1 >= b.radiusX && 1 >= b.radiusY
			}

			function d(a, b) {
				if(null == b.left) return !0;
				var c = b.left - a.left,
					d = b.top - a.top;
				return c * c + d * d > 400
			}
			var g, f, h, e = a.display;
			Ph(e.scroller, "mousedown", qe(a, yg)), gh && 11 > hh ? Ph(e.scroller, "dblclick", qe(a, function(b) {
				var c, d;
				Lb(a, b) || (c = Cd(a, b), !c || Dg(a, b) || Rc(a.display, b) || (Pb(b), d = a.findWordAt(c), rf(a.doc, d.anchor, d.head)))
			})) : Ph(e.scroller, "dblclick", function(b) {
				return Lb(a, b) || Pb(b)
			}), xh || Ph(e.scroller, "contextmenu", function(b) {
				return Eg(a, b)
			}), f = {
				end: 0
			}, Ph(e.scroller, "touchstart", function(b) {
				if(!Lb(a, b) && !c(b)) {
					e.input.ensurePolled(), clearTimeout(g);
					var d = +new Date;
					e.activeTouch = {
						start: d,
						moved: !1,
						prev: 300 >= d - f.end ? f : null
					}, 1 == b.touches.length && (e.activeTouch.left = b.touches[0].pageX, e.activeTouch.top = b.touches[0].pageY)
				}
			}), Ph(e.scroller, "touchmove", function() {
				e.activeTouch && (e.activeTouch.moved = !0)
			}), Ph(e.scroller, "touchend", function(c) {
				var h, g, f = e.activeTouch;
				f && !Rc(e, c) && null != f.left && !f.moved && 300 > new Date - f.start && (g = a.coordsChar(e.activeTouch, "page"), h = !f.prev || d(f, f.prev) ? new oi(g, g) : !f.prev.prev || d(f, f.prev.prev) ? a.findWordAt(g) : new oi(P(g.line, 0), W(a.doc, P(g.line + 1, 0))), a.setSelection(h.anchor, h.head), a.focus(), Pb(c)), b()
			}), Ph(e.scroller, "touchcancel", b), Ph(e.scroller, "scroll", function() {
				e.scroller.clientHeight && (ae(a, e.scroller.scrollTop), ce(a, e.scroller.scrollLeft, !0), Kb(a, "scroll", a))
			}), Ph(e.scroller, "mousewheel", function(b) {
				return Oe(a, b)
			}), Ph(e.scroller, "DOMMouseScroll", function(b) {
				return Oe(a, b)
			}), Ph(e.wrapper, "scroll", function() {
				return e.wrapper.scrollTop = e.wrapper.scrollLeft = 0
			}), e.dragFunctions = {
				enter: function(b) {
					Lb(a, b) || Sb(b)
				},
				over: function(b) {
					Lb(a, b) || (_f(a, b), Sb(b))
				},
				start: function(b) {
					return $f(a, b)
				},
				drop: qe(a, Zf),
				leave: function(b) {
					Lb(a, b) || ag(a)
				}
			}, h = e.input.getField(), Ph(h, "keyup", function(b) {
				return wg.call(a, b)
			}), Ph(h, "keydown", qe(a, ug)), Ph(h, "keypress", qe(a, xg)), Ph(h, "focus", function(b) {
				return Ld(a, b)
			}), Ph(h, "blur", function(b) {
				return Md(a, b)
			})
		}

		function Mg(a, b, c, f) {
			var h, i, j, k, m, l, n, o, p, s, q, t, g = a.doc;
			if(null == c && (c = "add"), "smart" == c && (g.mode.indent ? h = fc(a, b) : c = "prev"), i = a.options.tabSize, j = H(g, b), k = r(j.text, null, i), j.stateAfter && (j.stateAfter = null), l = j.text.match(/^\s*/)[0], f || /\S/.test(j.text)) {
				if("smart" == c && (m = g.mode.indent(h, j.text.slice(l.length), j.text), m == Dh || m > 150)) {
					if(!f) return;
					c = "prev"
				}
			} else m = 0, c = "not";
			if("prev" == c ? m = b > g.first ? r(H(g, b - 1).text, null, i) : 0 : "add" == c ? m = k + a.options.indentUnit : "subtract" == c ? m = k - a.options.indentUnit : "number" == typeof c && (m = k + c), m = d(0, m), n = "", o = 0, a.options.indentWithTabs)
				for(p = e(m / i); p; --p) o += i, n += "	";
			if(m > o && (n += u(m - o)), n != l) return Nf(g, n, P(b, 0), P(b, l.length), "+input"), j.stateAfter = null, !0;
			for(q = 0; q < g.sel.ranges.length; q++)
				if(s = g.sel.ranges[q], s.head.line == b && s.head.ch < l.length) {
					t = P(b, l.length), tf(g, q, new oi(t, t));
					break
				}
		}

		function Ng(a) {
			Ni = a
		}

		function Og(a, b, c, d, e) {
			var h, i, j, k, m, l, n, o, p, q, f = a.doc;
			if(a.display.shift = !1, d || (d = f.sel), h = a.state.pasteIncoming || "paste" == e, i = Rh(b), j = null, h && 1 < d.ranges.length)
				if(Ni && Ni.text.join("\n") == b) {
					if(0 == d.ranges.length % Ni.text.length)
						for(j = [], k = 0; k < Ni.text.length; k++) j.push(f.splitLines(Ni.text[k]))
				} else i.length == d.ranges.length && (j = w(i, function(a) {
					return [a]
				}));
			for(l = d.ranges.length - 1; l >= 0; l--) n = d.ranges[l], o = n.from(), p = n.to(), n.empty() && (c && c > 0 ? o = P(o.line, o.ch - c) : a.state.overwrite && !h ? p = P(p.line, g(H(f, p.line).text.length, p.ch + v(i).length)) : Ni && Ni.lineWise && Ni.text.join("\n") == b && (o = p = P(o.line, 0))), m = a.curOp.updateInput, q = {
				from: o,
				to: p,
				text: j ? j[l % j.length] : i,
				origin: e || (h ? "paste" : a.state.cutIncoming ? "cut" : "+input")
			}, Hf(a.doc, q), Cc(a, "inputRead", a, q);
			b && !h && Qg(a, b), Xd(a), a.curOp.updateInput = m, a.curOp.typing = !0, a.state.pasteIncoming = a.state.cutIncoming = !1
		}

		function Pg(a, b) {
			var c = a.clipboardData && a.clipboardData.getData("Text");
			return c ? (a.preventDefault(), b.isReadOnly() || b.options.disableInput || pe(b, function() {
				return Og(b, c, 0, null, "paste")
			}), !0) : void 0
		}

		function Qg(a, b) {
			var e, c, d, f, g, h;
			if(a.options.electricChars && a.options.smartIndent)
				for(c = a.doc.sel, d = c.ranges.length - 1; d >= 0; d--)
					if(e = c.ranges[d], !(100 < e.head.ch || d && c.ranges[d - 1].head.line == e.head.line)) {
						if(f = a.getModeAt(e.head), g = !1, f.electricChars) {
							for(h = 0; h < f.electricChars.length; h++)
								if(-1 < b.indexOf(f.electricChars.charAt(h))) {
									g = Mg(a, e.head.line, "smart");
									break
								}
						} else f.electricInput && f.electricInput.test(H(a.doc, e.head.line).text.slice(0, e.head.ch)) && (g = Mg(a, e.head.line, "smart"));
						g && Cc(a, "electricInput", a, e.head.line)
					}
		}

		function Rg(a) {
			var b, c, d, e, f;
			for(b = [], c = [], d = 0; d < a.doc.sel.ranges.length; d++) e = a.doc.sel.ranges[d].head.line, f = {
				anchor: P(e, 0),
				head: P(e + 1, 0)
			}, c.push(f), b.push(a.getRange(f.anchor, f.head));
			return {
				text: b,
				ranges: c
			}
		}

		function Sg(a, b) {
			a.setAttribute("autocorrect", "off"), a.setAttribute("autocapitalize", "off"), a.setAttribute("spellcheck", !!b)
		}

		function Tg() {
			var a = j("textarea", null, null, "position: absolute; bottom: -1em; padding: 0; width: 1px; height: 1em; outline: none"),
				b = j("div", [a], null, "overflow: hidden; position: relative; width: 3px; height: 0px;");
			return ih ? a.style.width = "1000px" : a.setAttribute("wrap", "off"), ph && (a.style.border = "1px solid black"), Sg(a), b
		}

		function Ug(a, b, c, d, e) {
			function f() {
				var d = b.line + c;
				return d < a.first || d >= a.first + a.size ? !1 : (b = new P(d, b.ch, b.sticky), j = H(a, d))
			}

			function g(d) {
				var g;
				if(g = e ? Hb(a.cm, j, b, c) : Fb(j, b, c), null != g) b = g;
				else {
					if(d || !f()) return !1;
					b = Gb(e, a.cm, j, b.line, c)
				}
				return !0
			}
			var k, l, m, n, o, p, q, h = b,
				i = c,
				j = H(a, b.line);
			if("char" == d) g();
			else if("column" == d) g(!0);
			else if("word" == d || "group" == d)
				for(k = null, l = "group" == d, m = a.cm && a.cm.getHelper(b, "wordChars"), n = !0; !(0 > c) || g(!n); n = !1) {
					if(o = j.text.charAt(b.ch) || "\n", p = B(o, m) ? "w" : l && "\n" == o ? "n" : !l || /\s/.test(o) ? null : "p", !l || n || p || (p = "s"), k && k != p) {
						0 > c && (c = 1, g(), b.sticky = "after");
						break
					}
					if(p && (k = p), c > 0 && !g(!n)) break
				}
			return q = Df(a, b, h, i, !0), R(h, q) && (q.hitSide = !0), q
		}

		function Vg(a, b, c, e) {
			var i, j, k, l, f = a.doc,
				h = b.left;
			for("page" == e ? (j = g(a.display.wrapper.clientHeight, window.innerHeight || document.documentElement.clientHeight), k = d(j - .5 * wd(a.display), 3), i = (c > 0 ? b.bottom : b.top) + c * k) : "line" == e && (i = c > 0 ? b.bottom + 3 : b.top - 3); l = sd(a, h, i), l.outside;) {
				if(0 > c ? 0 >= i : i >= f.height) {
					l.hitSide = !0;
					break
				}
				i += 5 * c
			}
			return l
		}

		function Wg(a, b) {
			var d, e, f, g, h, i, c = ad(a, b.line);
			return !c || c.hidden ? null : (d = H(a.doc, b.line), e = Zc(c, d, b.line), f = Db(d, a.doc.direction), g = "left", f && (h = Cb(f, b.ch), g = h % 2 ? "right" : "left"), i = dd(e.map, b.ch, g), i.offset = "right" == i.collapse ? i.end : i.start, i)
		}

		function Xg(a) {
			for(var b = a; b; b = b.parentNode)
				if(/CodeMirror-gutter-wrapper/.test(b.className)) return !0;
			return !1
		}

		function Yg(a, b) {
			return b && (a.bad = !0), a
		}

		function Zg(a, b, c, d, e) {
			function f(a) {
				return function(b) {
					return b.id == a
				}
			}

			function g() {
				k && (j += l, k = !1)
			}

			function h(a) {
				a && (g(), j += a)
			}

			function i(b) {
				var c, m, j, n, o, p;
				if(1 == b.nodeType) {
					if(c = b.getAttribute("cm-text"), null != c) return void h(c || b.textContent.replace(/\u200b/g, ""));
					if(j = b.getAttribute("cm-marker")) return n = a.findMarks(P(d, 0), P(e + 1, 0), f(+j)), void(n.length && (m = n[0].find()) && h(I(a.doc, m.from, m.to).join(l)));
					if("false" == b.getAttribute("contenteditable")) return;
					for(o = /^(pre|div|p)$/i.test(b.nodeName), o && g(), p = 0; p < b.childNodes.length; p++) i(b.childNodes[p]);
					o && (k = !0)
				} else 3 == b.nodeType && h(b.nodeValue)
			}
			for(var j = "", k = !1, l = a.doc.lineSeparator(); i(b), b != c;) b = b.nextSibling;
			return j
		}

		function $g(a, b, c) {
			var d, f, e;
			if(b == a.display.lineDiv) {
				if(d = a.display.lineDiv.childNodes[c], !d) return Yg(a.clipPos(P(a.display.viewTo - 1)), !0);
				b = null, c = 0
			} else
				for(d = b;; d = d.parentNode) {
					if(!d || d == a.display.lineDiv) return null;
					if(d.parentNode && d.parentNode == a.display.lineDiv) break
				}
			for(e = 0; e < a.display.view.length; e++)
				if(f = a.display.view[e], f.node == d) return _g(f, b, c)
		}

		function _g(a, b, c) {
			function d(b, c, d) {
				var f, e, h, g, i, l;
				for(e = -1; e < (k ? k.length : 0); e++)
					for(f = 0 > e ? j.map : k[e], g = 0; g < f.length; g += 3)
						if(h = f[g + 2], h == b || h == c) return i = L(0 > e ? a.line : a.rest[e]), l = f[g] + d, (0 > d || h != b) && (l = f[g + (d ? 1 : 0)]), P(i, l)
			}
			var g, h, i, j, k, m, n, o, p, q, e = a.text.firstChild,
				f = !1;
			if(!b || !l(e, b)) return Yg(P(L(a.line), 0), !0);
			if(b == e && (f = !0, b = e.childNodes[c], c = 0, !b)) return g = a.rest ? v(a.rest) : a.line, Yg(P(L(g), g.text.length), f);
			for(h = 3 == b.nodeType ? b : null, i = b, h || 1 != b.childNodes.length || 3 != b.firstChild.nodeType || (h = b.firstChild, c && (c = h.nodeValue.length)); i.parentNode != e;) i = i.parentNode;
			if(j = a.measure, k = j.maps, m = d(h, i, c), m) return Yg(m, f);
			for(n = i.nextSibling, o = h ? h.nodeValue.length - c : 0; n; n = n.nextSibling) {
				if(m = d(n, n.firstChild, 0)) return Yg(P(m.line, m.ch - o), f);
				o += n.textContent.length
			}
			for(p = i.previousSibling, q = c; p; p = p.previousSibling) {
				if(m = d(p, p.firstChild, -1)) return Yg(P(m.line, m.ch + q), f);
				q += p.textContent.length
			}
		}
		var zh, wh, xh, yh, Ah, Bh, Zh, $h, Ch, Dh, Eh, Fh, Gh, Hh, Ih, Jh, Kh, Lh, Mh, Nh, Oh, Ph, Qh, Rh, Sh, Th, Uh, Vh, Wh, Xh, Yh, _h, gi, ai, bi, ci, di, ei, fi, hi, ii, ji, ki, li, mi, ni, oi, pi, qi, ri, si, ti, ui, vi, wi, xi, yi, zi, Ai, Bi, Ci, Di, Ki, Li, Ei, Fi, Gi, Hi, Ii, Ji, Mi, Ni, Oi, Pi, Qi, Ri, ah = navigator.userAgent,
			bh = navigator.platform,
			ch = /gecko\/\d/i.test(ah),
			dh = /MSIE \d/.test(ah),
			eh = /Trident\/(?:[7-9]|\d{2,})\..*rv:(\d+)/.exec(ah),
			fh = /Edge\/(\d+)/.exec(ah),
			gh = dh || eh || fh,
			hh = gh && (dh ? document.documentMode || 6 : +(fh || eh)[1]),
			ih = !fh && /WebKit\//.test(ah),
			jh = ih && /Qt\/\d+\.\d+/.test(ah),
			kh = !fh && /Chrome\//.test(ah),
			lh = /Opera\//.test(ah),
			mh = /Apple Computer/.test(navigator.vendor),
			nh = /Mac OS X 1\d\D([8-9]|\d\d)\D/.test(ah),
			oh = /PhantomJS/.test(ah),
			ph = !fh && /AppleWebKit/.test(ah) && /Mobile\/\w+/.test(ah),
			qh = /Android/.test(ah),
			rh = ph || qh || /webOS|BlackBerry|Opera Mini|Opera Mobi|IEMobile/i.test(ah),
			sh = ph || /Mac/.test(bh),
			th = /\bCrOS\b/.test(ah),
			uh = /win/i.test(bh),
			vh = lh && ah.match(/Version\/(\d*\.\d*)/);
		vh && (vh = +vh[1]), vh && vh >= 15 && (lh = !1, ih = !0), wh = sh && (jh || lh && (null == vh || 12.11 > vh)), xh = ch || gh && hh >= 9, yh = function(b, c) {
			var f, d = b.className,
				e = a(c).exec(d);
			e && (f = d.slice(e.index + e[0].length), b.className = d.slice(0, e.index) + (f ? e[1] + f : ""))
		}, zh = document.createRange ? function(a, b, c, d) {
			var e = document.createRange();
			return e.setEnd(d || a, c), e.setStart(a, b), e
		} : function(a, b, c) {
			var d = document.body.createTextRange();
			try {
				d.moveToElementText(a.parentNode)
			} catch(b) {
				return d
			}
			return d.collapse(!0), d.moveEnd("character", c), d.moveStart("character", b), d
		}, Ah = function(a) {
			a.select()
		}, ph ? Ah = function(a) {
			a.selectionStart = 0, a.selectionEnd = a.value.length
		} : gh && (Ah = function(a) {
			try {
				a.select()
			} catch(a) {}
		}), Bh = function() {
			this.id = null
		}, Bh.prototype.set = function(a, b) {
			clearTimeout(this.id), this.id = setTimeout(b, a)
		}, Ch = 30, Dh = {
			toString: function() {
				return "CodeMirror.Pass"
			}
		}, Eh = {
			scroll: !1
		}, Fh = {
			origin: "*mouse"
		}, Gh = {
			origin: "+move"
		}, Hh = [""], Ih = /[\u00df\u0587\u0590-\u05f4\u0600-\u06ff\u3040-\u309f\u30a0-\u30ff\u3400-\u4db5\u4e00-\u9fcc\uac00-\ud7af]/, Jh = /[\u0300-\u036f\u0483-\u0489\u0591-\u05bd\u05bf\u05c1\u05c2\u05c4\u05c5\u05c7\u0610-\u061a\u064b-\u065e\u0670\u06d6-\u06dc\u06de-\u06e4\u06e7\u06e8\u06ea-\u06ed\u0711\u0730-\u074a\u07a6-\u07b0\u07eb-\u07f3\u0816-\u0819\u081b-\u0823\u0825-\u0827\u0829-\u082d\u0900-\u0902\u093c\u0941-\u0948\u094d\u0951-\u0955\u0962\u0963\u0981\u09bc\u09be\u09c1-\u09c4\u09cd\u09d7\u09e2\u09e3\u0a01\u0a02\u0a3c\u0a41\u0a42\u0a47\u0a48\u0a4b-\u0a4d\u0a51\u0a70\u0a71\u0a75\u0a81\u0a82\u0abc\u0ac1-\u0ac5\u0ac7\u0ac8\u0acd\u0ae2\u0ae3\u0b01\u0b3c\u0b3e\u0b3f\u0b41-\u0b44\u0b4d\u0b56\u0b57\u0b62\u0b63\u0b82\u0bbe\u0bc0\u0bcd\u0bd7\u0c3e-\u0c40\u0c46-\u0c48\u0c4a-\u0c4d\u0c55\u0c56\u0c62\u0c63\u0cbc\u0cbf\u0cc2\u0cc6\u0ccc\u0ccd\u0cd5\u0cd6\u0ce2\u0ce3\u0d3e\u0d41-\u0d44\u0d4d\u0d57\u0d62\u0d63\u0dca\u0dcf\u0dd2-\u0dd4\u0dd6\u0ddf\u0e31\u0e34-\u0e3a\u0e47-\u0e4e\u0eb1\u0eb4-\u0eb9\u0ebb\u0ebc\u0ec8-\u0ecd\u0f18\u0f19\u0f35\u0f37\u0f39\u0f71-\u0f7e\u0f80-\u0f84\u0f86\u0f87\u0f90-\u0f97\u0f99-\u0fbc\u0fc6\u102d-\u1030\u1032-\u1037\u1039\u103a\u103d\u103e\u1058\u1059\u105e-\u1060\u1071-\u1074\u1082\u1085\u1086\u108d\u109d\u135f\u1712-\u1714\u1732-\u1734\u1752\u1753\u1772\u1773\u17b7-\u17bd\u17c6\u17c9-\u17d3\u17dd\u180b-\u180d\u18a9\u1920-\u1922\u1927\u1928\u1932\u1939-\u193b\u1a17\u1a18\u1a56\u1a58-\u1a5e\u1a60\u1a62\u1a65-\u1a6c\u1a73-\u1a7c\u1a7f\u1b00-\u1b03\u1b34\u1b36-\u1b3a\u1b3c\u1b42\u1b6b-\u1b73\u1b80\u1b81\u1ba2-\u1ba5\u1ba8\u1ba9\u1c2c-\u1c33\u1c36\u1c37\u1cd0-\u1cd2\u1cd4-\u1ce0\u1ce2-\u1ce8\u1ced\u1dc0-\u1de6\u1dfd-\u1dff\u200c\u200d\u20d0-\u20f0\u2cef-\u2cf1\u2de0-\u2dff\u302a-\u302f\u3099\u309a\ua66f-\ua672\ua67c\ua67d\ua6f0\ua6f1\ua802\ua806\ua80b\ua825\ua826\ua8c4\ua8e0-\ua8f1\ua926-\ua92d\ua947-\ua951\ua980-\ua982\ua9b3\ua9b6-\ua9b9\ua9bc\uaa29-\uaa2e\uaa31\uaa32\uaa35\uaa36\uaa43\uaa4c\uaab0\uaab2-\uaab4\uaab7\uaab8\uaabe\uaabf\uaac1\uabe5\uabe8\uabed\udc00-\udfff\ufb1e\ufe00-\ufe0f\ufe20-\ufe26\uff9e\uff9f]/, Kh = !1, Lh = !1, Mh = null, Nh = function() {
			function a(a) {
				return 247 >= a ? c.charAt(a) : a >= 1424 && 1524 >= a ? "R" : a >= 1536 && 1785 >= a ? d.charAt(a - 1536) : a >= 1774 && 2220 >= a ? "r" : a >= 8192 && 8203 >= a ? "w" : 8204 == a ? "b" : "L"
			}

			function b(a, b, c) {
				this.level = a, this.from = b, this.to = c
			}
			var c = "bbbbbbbbbtstwsbbbbbbbbbbbbbbssstwNN%%%NNNNNN,N,N1111111111NNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNbbbbbbsbbbbbbbbbbbbbbbbbbbbbbbbbb,N%%%%NNNNLNNNNN%%11NLNNN1LNNNNNLLLLLLLLLLLLLLLLLLLLLLLNLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLN",
				d = "nnnnnnNNr%%r,rNNmmmmmmmmmmmrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrmmmmmmmmmmmmmmmmmmmmmnnnnnnnnnn%nnrrrmrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrmmmmmmmnNmmmmmmrrmmNmmmmrr1111111111",
				e = /[\u0590-\u05f4\u0600-\u06ff\u0700-\u08ac]/,
				f = /[stwN]/,
				g = /[LRr]/,
				h = /[Lb1n]/,
				i = /[1n]/;
			return function(c, d) {
				var k, l, m, p, n, o, s, q, r, w, t, u, y, x, z, A, B, E, C, D, F, G, H, I, J, K, N, L, M, O, P, Q, R, S, j = "ltr" == d ? "L" : "R";
				if(0 == c.length || "ltr" == d && !e.test(c)) return !1;
				for(k = c.length, l = [], m = 0; k > m; ++m) l.push(a(c.charCodeAt(m)));
				for(n = 0, o = j; k > n; ++n) p = l[n], "m" == p ? l[n] = o : o = p;
				for(q = 0, r = j; k > q; ++q) s = l[q], "1" == s && "r" == r ? l[q] = "n" : g.test(s) && (r = s, "r" == s && (l[q] = "R"));
				for(t = 1, u = l[0]; k - 1 > t; ++t) w = l[t], "+" == w && "1" == u && "1" == l[t + 1] ? l[t] = "1" : "," == w && u == l[t + 1] && ("1" == u || "n" == u) && (l[t] = u), u = w;
				for(x = 0; k > x; ++x)
					if(y = l[x], "," == y) l[x] = "N";
					else if("%" == y) {
					for(z = void 0, z = x + 1; k > z && "%" == l[z]; ++z);
					for(A = x && "!" == l[x - 1] || k > z && "1" == l[z] ? "1" : "N", B = x; z > B; ++B) l[B] = A;
					x = z - 1
				}
				for(C = 0, D = j; k > C; ++C) E = l[C], "L" == D && "1" == E ? l[C] = "L" : g.test(E) && (D = E);
				for(F = 0; k > F; ++F)
					if(f.test(l[F])) {
						for(G = void 0, G = F + 1; k > G && f.test(l[G]); ++G);
						for(H = "L" == (F ? l[F - 1] : j), I = "L" == (k > G ? l[G] : j), J = H == I ? H ? "L" : "R" : j, K = F; G > K; ++K) l[K] = J;
						F = G - 1
					}
				for(L = [], M = 0; k > M;)
					if(h.test(l[M])) {
						for(O = M, ++M; k > M && h.test(l[M]); ++M);
						L.push(new b(0, O, M))
					} else {
						for(P = M, Q = L.length, ++M; k > M && "L" != l[M]; ++M);
						for(R = P; M > R;)
							if(i.test(l[R])) {
								for(R > P && L.splice(Q, 0, new b(1, P, R)), S = R, ++R; M > R && i.test(l[R]); ++R);
								L.splice(Q, 0, new b(2, S, R)), P = R
							} else ++R;
						M > P && L.splice(Q, 0, new b(1, P, M))
					}
				return 1 == L[0].level && (N = c.match(/^\s+/)) && (L[0].from = N[0].length, L.unshift(new b(0, 0, N[0].length))), 1 == v(L).level && (N = c.match(/\s+$/)) && (v(L).to -= N[0].length, L.push(new b(0, k - N[0].length, k))), "rtl" == d ? L.reverse() : L
			}
		}(), Oh = [], Ph = function(a, b, c) {
			if(a.addEventListener) a.addEventListener(b, c, !1);
			else if(a.attachEvent) a.attachEvent("on" + b, c);
			else {
				var d = a._handlers || (a._handlers = {});
				d[b] = (d[b] || Oh).concat(c)
			}
		}, Qh = function() {
			if(gh && 9 > hh) return !1;
			var a = j("div");
			return "draggable" in a || "dragDrop" in a
		}(), Rh = 3 == "\n\nb".split(/\n/).length ? function(a) {
			return a.split(/\r\n?|\n/)
		} : function(a) {
			var e, b, c, d, f, g;
			for(b = 0, c = [], d = a.length; d >= b;) e = a.indexOf("\n", b), -1 == e && (e = a.length), f = a.slice(b, "\r" == a.charAt(e - 1) ? e - 1 : e), g = f.indexOf("\r"), -1 == g ? (c.push(f), b = e + 1) : (c.push(f.slice(0, g)), b += g + 1);
			return c
		}, Sh = window.getSelection ? function(a) {
			try {
				return a.selectionStart != a.selectionEnd
			} catch(b) {
				return !1
			}
		} : function(a) {
			var b;
			try {
				b = a.ownerDocument.selection.createRange()
			} catch(b) {}
			return b && b.parentElement() == a && 0 != b.compareEndPoints("StartToEnd", b)
		}, Th = function() {
			var a = j("div");
			return !!("oncopy" in a) || (a.setAttribute("oncopy", "return;"), "function" == typeof a.oncopy)
		}(), Uh = null, Vh = {}, Wh = {}, Xh = {}, Yh = function(a, b) {
			this.pos = this.start = 0, this.string = a, this.tabSize = b || 8, this.lastColumnPos = this.lastColumnValue = 0, this.lineStart = 0
		}, Yh.prototype.eol = function() {
			return this.pos >= this.string.length
		}, Yh.prototype.sol = function() {
			return this.pos == this.lineStart
		}, Yh.prototype.peek = function() {
			return this.string.charAt(this.pos) || void 0
		}, Yh.prototype.next = function() {
			return this.pos < this.string.length ? this.string.charAt(this.pos++) : void 0
		}, Yh.prototype.eat = function(a) {
			var c, b = this.string.charAt(this.pos);
			return(c = "string" == typeof a ? b == a : b && (a.test ? a.test(b) : a(b))) ? (++this.pos, b) : void 0
		}, Yh.prototype.eatWhile = function(a) {
			for(var b = this.pos; this.eat(a););
			return this.pos > b
		}, Yh.prototype.eatSpace = function() {
			for(var a = this, b = this.pos;
				/[\s\u00a0]/.test(this.string.charAt(this.pos));) ++a.pos;
			return this.pos > b
		}, Yh.prototype.skipToEnd = function() {
			this.pos = this.string.length
		}, Yh.prototype.skipTo = function(a) {
			var b = this.string.indexOf(a, this.pos);
			return b > -1 ? (this.pos = b, !0) : void 0
		}, Yh.prototype.backUp = function(a) {
			this.pos -= a
		}, Yh.prototype.column = function() {
			return this.lastColumnPos < this.start && (this.lastColumnValue = r(this.string, this.start, this.tabSize, this.lastColumnPos, this.lastColumnValue), this.lastColumnPos = this.start), this.lastColumnValue - (this.lineStart ? r(this.string, this.lineStart, this.tabSize) : 0)
		}, Yh.prototype.indentation = function() {
			return r(this.string, null, this.tabSize) - (this.lineStart ? r(this.string, this.lineStart, this.tabSize) : 0)
		}, Yh.prototype.match = function(a, b, c) {
			var d, e, f;
			return "string" != typeof a ? (f = this.string.slice(this.pos).match(a), f && 0 < f.index ? null : (f && !1 !== b && (this.pos += f[0].length), f)) : (d = function(a) {
				return c ? a.toLowerCase() : a
			}, e = this.string.substr(this.pos, a.length), d(e) == d(a) ? (!1 !== b && (this.pos += a.length), !0) : void 0)
		}, Yh.prototype.current = function() {
			return this.string.slice(this.start, this.pos)
		}, Yh.prototype.hideFirstChars = function(a, b) {
			this.lineStart += a;
			try {
				return b()
			} finally {
				this.lineStart -= a
			}
		}, _h = function(a, b, c) {
			this.text = a, jb(this, b), this.height = c ? c(this) : 1
		}, _h.prototype.lineNo = function() {
			return L(this)
		}, Ob(_h), ai = {}, bi = {}, ci = null, di = null, ei = {
			left: 0,
			right: 0,
			top: 0,
			bottom: 0
		}, fi = function(a, b, c) {
			this.cm = c;
			var d = this.vert = j("div", [j("div", null, null, "min-width: 1px")], "CodeMirror-vscrollbar"),
				e = this.horiz = j("div", [j("div", null, null, "height: 100%; min-height: 1px")], "CodeMirror-hscrollbar");
			a(d), a(e), Ph(d, "scroll", function() {
				d.clientHeight && b(d.scrollTop, "vertical")
			}), Ph(e, "scroll", function() {
				e.clientWidth && b(e.scrollLeft, "horizontal")
			}), this.checkedZeroWidth = !1, gh && 8 > hh && (this.horiz.style.minHeight = this.vert.style.minWidth = "18px")
		}, fi.prototype.update = function(a) {
			var f, g, b = a.scrollWidth > a.clientWidth + 1,
				c = a.scrollHeight > a.clientHeight + 1,
				e = a.nativeBarWidth;
			return c ? (this.vert.style.display = "block", this.vert.style.bottom = b ? e + "px" : "0", f = a.viewHeight - (b ? e : 0), this.vert.firstChild.style.height = d(0, a.scrollHeight - a.clientHeight + f) + "px") : (this.vert.style.display = "", this.vert.firstChild.style.height = "0"), b ? (this.horiz.style.display = "block", this.horiz.style.right = c ? e + "px" : "0", this.horiz.style.left = a.barLeft + "px", g = a.viewWidth - a.barLeft - (c ? e : 0), this.horiz.firstChild.style.width = d(0, a.scrollWidth - a.clientWidth + g) + "px") : (this.horiz.style.display = "", this.horiz.firstChild.style.width = "0"), !this.checkedZeroWidth && 0 < a.clientHeight && (0 == e && this.zeroWidthHack(), this.checkedZeroWidth = !0), {
				right: c ? e : 0,
				bottom: b ? e : 0
			}
		}, fi.prototype.setScrollLeft = function(a) {
			this.horiz.scrollLeft != a && (this.horiz.scrollLeft = a), this.disableHoriz && this.enableZeroWidthBar(this.horiz, this.disableHoriz, "horiz")
		}, fi.prototype.setScrollTop = function(a) {
			this.vert.scrollTop != a && (this.vert.scrollTop = a), this.disableVert && this.enableZeroWidthBar(this.vert, this.disableVert, "vert")
		}, fi.prototype.zeroWidthHack = function() {
			var a = sh && !nh ? "12px" : "18px";
			this.horiz.style.height = this.vert.style.width = a, this.horiz.style.pointerEvents = this.vert.style.pointerEvents = "none", this.disableHoriz = new Bh, this.disableVert = new Bh
		}, fi.prototype.enableZeroWidthBar = function(a, b, c) {
			function d() {
				var e = a.getBoundingClientRect(),
					f = "vert" == c ? document.elementFromPoint(e.right - 1, (e.top + e.bottom) / 2) : document.elementFromPoint((e.right + e.left) / 2, e.bottom - 1);
				f == a ? b.set(1e3, d) : a.style.pointerEvents = "none"
			}
			a.style.pointerEvents = "auto", b.set(1e3, d)
		}, fi.prototype.clear = function() {
			var a = this.horiz.parentNode;
			a.removeChild(this.horiz), a.removeChild(this.vert)
		}, hi = function() {}, hi.prototype.update = function() {
			return {
				bottom: 0,
				right: 0
			}
		}, hi.prototype.setScrollLeft = function() {}, hi.prototype.setScrollTop = function() {}, hi.prototype.clear = function() {}, ii = {
			"native": fi,
			"null": hi
		}, ji = 0, ki = function(a, b, c) {
			var d = a.display;
			this.viewport = b, this.visible = Pd(d, a.doc, b), this.editorIsHidden = !d.wrapper.offsetWidth, this.wrapperHeight = d.wrapper.clientHeight, this.wrapperWidth = d.wrapper.clientWidth, this.oldDisplayWidth = Wc(a), this.force = c, this.dims = yd(a), this.events = []
		}, ki.prototype.signal = function(a, b) {
			Nb(a, b) && this.events.push(arguments)
		}, ki.prototype.finish = function() {
			for(var a = this, b = 0; b < this.events.length; b++) Kb.apply(null, a.events[b])
		}, li = 0, mi = null, gh ? mi = -.53 : ch ? mi = 15 : kh ? mi = -.7 : mh && (mi = -1 / 3), ni = function(a, b) {
			this.ranges = a, this.primIndex = b
		}, ni.prototype.primary = function() {
			return this.ranges[this.primIndex]
		}, ni.prototype.equals = function(a) {
			var c, d, e, b = this;
			if(a == this) return !0;
			if(a.primIndex != this.primIndex || a.ranges.length != this.ranges.length) return !1;
			for(c = 0; c < this.ranges.length; c++)
				if(d = b.ranges[c], e = a.ranges[c], !R(d.anchor, e.anchor) || !R(d.head, e.head)) return !1;
			return !0
		}, ni.prototype.deepCopy = function() {
			for(var a = this, b = [], c = 0; c < this.ranges.length; c++) b[c] = new oi(S(a.ranges[c].anchor), S(a.ranges[c].head));
			return new ni(b, this.primIndex)
		}, ni.prototype.somethingSelected = function() {
			for(var a = this, b = 0; b < this.ranges.length; b++)
				if(!a.ranges[b].empty()) return !0;
			return !1
		}, ni.prototype.contains = function(a, b) {
			var e, d, c = this;
			for(b || (b = a), d = 0; d < this.ranges.length; d++)
				if(e = c.ranges[d], 0 <= Q(b, e.from()) && 0 >= Q(a, e.to())) return d;
			return -1
		}, oi = function(a, b) {
			this.anchor = a, this.head = b
		}, oi.prototype.from = function() {
			return U(this.anchor, this.head)
		}, oi.prototype.to = function() {
			return T(this.anchor, this.head)
		}, oi.prototype.empty = function() {
			return this.head.line == this.anchor.line && this.head.ch == this.anchor.ch
		}, pi = function(a) {
			var c, d, b = this;
			for(this.lines = a, this.parent = null, c = 0, d = 0; d < a.length; ++d) a[d].parent = b, c += a[d].height;
			this.height = c
		}, pi.prototype.chunkSize = function() {
			return this.lines.length
		}, pi.prototype.removeInner = function(a, b) {
			for(var e, c = this, d = a; a + b > d; ++d) e = c.lines[d], c.height -= e.height, oc(e), Cc(e, "delete");
			this.lines.splice(a, b)
		}, pi.prototype.collapse = function(a) {
			a.push.apply(a, this.lines)
		}, pi.prototype.insertInner = function(a, b, c) {
			var e, d = this;
			for(this.height += c, this.lines = this.lines.slice(0, a).concat(b).concat(this.lines.slice(a)), e = 0; e < b.length; ++e) b[e].parent = d
		}, pi.prototype.iterN = function(a, b, c) {
			for(var d = this, e = a + b; e > a; ++a)
				if(c(d.lines[a])) return !0
		}, qi = function(a) {
			var f, c, d, e, b = this;
			for(this.children = a, c = 0, d = 0, e = 0; e < a.length; ++e) f = a[e], c += f.chunkSize(), d += f.height, f.parent = b;
			this.size = c, this.height = d, this.parent = null
		}, qi.prototype.chunkSize = function() {
			return this.size
		}, qi.prototype.removeInner = function(a, b) {
			var d, e, f, h, i, j, c = this;
			for(this.size -= b, d = 0; d < this.children.length; ++d)
				if(e = c.children[d], f = e.chunkSize(), f > a) {
					if(h = g(b, f - a), i = e.height, e.removeInner(a, h), c.height -= i - e.height, f == h && (c.children.splice(d--, 1), e.parent = null), 0 == (b -= h)) break;
					a = 0
				} else a -= f;
			25 > this.size - b && (1 < this.children.length || !(this.children[0] instanceof pi)) && (j = [], this.collapse(j), this.children = [new pi(j)], this.children[0].parent = this)
		}, qi.prototype.collapse = function(a) {
			for(var b = this, c = 0; c < this.children.length; ++c) b.children[c].collapse(a)
		}, qi.prototype.insertInner = function(a, b, c) {
			var e, f, g, j, h, i, d = this;
			for(this.size += b.length, this.height += c, e = 0; e < this.children.length; ++e) {
				if(f = d.children[e], g = f.chunkSize(), g >= a) {
					if(f.insertInner(a, b, c), f.lines && 50 < f.lines.length) {
						for(h = f.lines.length % 25 + 25, i = h; i < f.lines.length;) j = new pi(f.lines.slice(i, i += 25)), f.height -= j.height, d.children.splice(++e, 0, j), j.parent = d;
						f.lines = f.lines.slice(0, h), d.maybeSpill()
					}
					break
				}
				a -= g
			}
		}, qi.prototype.maybeSpill = function() {
			var a, b, c, d, e;
			if(!(10 >= this.children.length)) {
				a = this;
				do b = a.children.splice(a.children.length - 5, 5), c = new qi(b), a.parent ? (a.size -= c.size, a.height -= c.height, e = s(a.parent.children, a), a.parent.children.splice(e + 1, 0, c)) : (d = new qi(a.children), d.parent = a, a.children = [d, c], a = d), c.parent = a.parent; while (10 < a.children.length);
				a.parent.maybeSpill()
			}
		}, qi.prototype.iterN = function(a, b, c) {
			var d, e, f, h, i;
			for(d = this, e = 0; e < this.children.length; ++e)
				if(f = d.children[e], h = f.chunkSize(), h > a) {
					if(i = g(b, h - a), f.iterN(a, i, c)) return !0;
					if(0 == (b -= i)) break;
					a = 0
				} else a -= h
		}, ri = function(a, b, c) {
			var e, d = this;
			if(c)
				for(e in c) c.hasOwnProperty(e) && (d[e] = c[e]);
			this.doc = a, this.node = b
		}, ri.prototype.clear = function() {
			var g, h, a = this,
				b = this.doc.cm,
				c = this.line.widgets,
				e = this.line,
				f = L(e);
			if(null != f && c) {
				for(g = 0; g < c.length; ++g) c[g] == a && c.splice(g--, 1);
				c.length || (e.widgets = null), h = Qc(this), K(e, d(0, e.height - h)), b && (pe(b, function() {
					Sf(b, e, -h), ue(b, f, "widget")
				}), Cc(b, "lineWidgetCleared", b, this, f))
			}
		}, ri.prototype.changed = function() {
			var e, a = this,
				b = this.height,
				c = this.doc.cm,
				d = this.line;
			this.height = null, e = Qc(this) - b, e && (K(d, d.height + e), c && pe(c, function() {
				c.curOp.forceUpdate = !0, Sf(c, d, e), Cc(c, "lineWidgetChanged", c, a, L(d))
			}))
		}, Ob(ri), si = 0, ti = function(a, b) {
			this.lines = [], this.type = b, this.doc = a, this.id = ++si
		}, ti.prototype.clear = function() {
			var b, c, d, e, f, g, h, i, j, k, l, a = this;
			if(!this.explicitlyCleared) {
				for(b = this.doc.cm, c = b && !b.curOp, c && he(b), Nb(this, "clear") && (d = this.find(), d && Cc(this, "clear", d.from, d.to)), e = null, f = null, g = 0; g < this.lines.length; ++g) h = a.lines[g], i = ab(h.markedSpans, a), b && !a.collapsed ? ue(b, L(h), "text") : b && (null != i.to && (f = L(h)), null != i.from && (e = L(h))), h.markedSpans = bb(h.markedSpans, i), null == i.from && a.collapsed && !wb(a.doc, h) && b && K(h, wd(b.display));
				if(b && this.collapsed && !b.options.lineWrapping)
					for(j = 0; j < this.lines.length; ++j) k = rb(a.lines[j]), l = zb(k), l > b.display.maxLineLength && (b.display.maxLine = k, b.display.maxLineLength = l, b.display.maxLineChanged = !0);
				null != e && b && this.collapsed && te(b, e, f + 1), this.lines.length = 0, this.explicitlyCleared = !0, this.atomic && this.doc.cantEdit && (this.doc.cantEdit = !1, b && Af(b.doc)), b && Cc(b, "markerCleared", b, this, e, f), c && ie(b), this.parent && this.parent.clear()
			}
		}, ti.prototype.find = function(a, b) {
			var e, f, d, g, h, c = this;
			for(null == a && "bookmark" == this.type && (a = 1), d = 0; d < this.lines.length; ++d) {
				if(g = c.lines[d], h = ab(g.markedSpans, c), null != h.from && (e = P(b ? g : L(g), h.from), -1 == a)) return e;
				if(null != h.to && (f = P(b ? g : L(g), h.to), 1 == a)) return f
			}
			return e && {
				from: e,
				to: f
			}
		}, ti.prototype.changed = function() {
			var a = this,
				b = this.find(-1, !0),
				c = this,
				d = this.doc.cm;
			b && d && pe(d, function() {
				var h, i, e = b.line,
					f = L(b.line),
					g = ad(d, f);
				g && (hd(g), d.curOp.selectionChanged = d.curOp.forceUpdate = !0), d.curOp.updateMaxLine = !0, wb(c.doc, e) || null == c.height || (h = c.height, c.height = null, i = Qc(c) - h, i && K(e, e.height + i)), Cc(d, "markerChanged", d, a)
			})
		}, ti.prototype.attachLine = function(a) {
			if(!this.lines.length && this.doc.cm) {
				var b = this.doc.cm.curOp;
				b.maybeHiddenMarkers && -1 != s(b.maybeHiddenMarkers, this) || (b.maybeUnhiddenMarkers || (b.maybeUnhiddenMarkers = [])).push(this)
			}
			this.lines.push(a)
		}, ti.prototype.detachLine = function(a) {
			if(this.lines.splice(s(this.lines, a), 1), !this.lines.length && this.doc.cm) {
				var b = this.doc.cm.curOp;
				(b.maybeHiddenMarkers || (b.maybeHiddenMarkers = [])).push(this)
			}
		}, Ob(ti), ui = function(a, b) {
			var d, c = this;
			for(this.markers = a, this.primary = b, d = 0; d < a.length; ++d) a[d].parent = c
		}, ui.prototype.clear = function() {
			var b, a = this;
			if(!this.explicitlyCleared) {
				for(this.explicitlyCleared = !0, b = 0; b < this.markers.length; ++b) a.markers[b].clear();
				Cc(this, "clear")
			}
		}, ui.prototype.find = function(a, b) {
			return this.primary.find(a, b)
		}, Ob(ui), vi = 0, wi = function(a, b, c, d, e) {
			if(!(this instanceof wi)) return new wi(a, b, c, d, e);
			null == c && (c = 0), qi.call(this, [new pi([new _h("", null)])]), this.first = c, this.scrollTop = this.scrollLeft = 0, this.cantEdit = !1, this.cleanGeneration = 1, this.frontier = c;
			var f = P(c, 0);
			this.sel = Qe(f), this.history = new cf(null), this.id = ++vi, this.modeOption = b, this.lineSep = d, this.direction = "rtl" == e ? "rtl" : "ltr", this.extend = !1, "string" == typeof a && (a = this.splitLines(a)), Ze(this, {
				from: f,
				to: f,
				text: a
			}), xf(this, Qe(f), Eh)
		}, wi.prototype = z(qi.prototype, {
			constructor: wi,
			iter: function(a, b, c) {
				c ? this.iterN(a - this.first, b - a, c) : this.iterN(this.first, this.first + this.size, a)
			},
			insert: function(a, b) {
				for(var c = 0, d = 0; d < b.length; ++d) c += b[d].height;
				this.insertInner(a - this.first, b, c)
			},
			remove: function(a, b) {
				this.removeInner(a - this.first, b)
			},
			getValue: function(a) {
				var b = J(this, this.first, this.first + this.size);
				return !1 === a ? b : b.join(a || this.lineSeparator())
			},
			setValue: se(function(a) {
				var b = P(this.first, 0),
					c = this.first + this.size - 1;
				Hf(this, {
					from: b,
					to: P(c, H(this, c).text.length),
					text: this.splitLines(a),
					origin: "setValue",
					full: !0
				}, !0), this.cm && Yd(this.cm, 0, 0), xf(this, Qe(b), Eh)
			}),
			replaceRange: function(a, b, c, d) {
				b = W(this, b), c = c ? W(this, c) : b, Nf(this, a, b, c, d)
			},
			getRange: function(a, b, c) {
				var d = I(this, W(this, a), W(this, b));
				return !1 === c ? d : d.join(c || this.lineSeparator())
			},
			getLine: function(a) {
				var b = this.getLineHandle(a);
				return b && b.text
			},
			getLineHandle: function(a) {
				return N(this, a) ? H(this, a) : void 0
			},
			getLineNumber: function(a) {
				return L(a)
			},
			getLineHandleVisualStart: function(a) {
				return "number" == typeof a && (a = H(this, a)), rb(a)
			},
			lineCount: function() {
				return this.size
			},
			firstLine: function() {
				return this.first
			},
			lastLine: function() {
				return this.first + this.size - 1
			},
			clipPos: function(a) {
				return W(this, a)
			},
			getCursor: function(a) {
				var c, b = this.sel.primary();
				return c = null == a || "head" == a ? b.head : "anchor" == a ? b.anchor : "end" == a || "to" == a || !1 === a ? b.to() : b.from()
			},
			listSelections: function() {
				return this.sel.ranges
			},
			somethingSelected: function() {
				return this.sel.somethingSelected()
			},
			setCursor: se(function(a, b, c) {
				uf(this, W(this, "number" == typeof a ? P(a, b || 0) : a), null, c)
			}),
			setSelection: se(function(a, b, c) {
				uf(this, W(this, a), W(this, b || a), c)
			}),
			extendSelection: se(function(a, b, c) {
				rf(this, W(this, a), b && W(this, b), c)
			}),
			extendSelections: se(function(a, b) {
				sf(this, Y(this, a), b)
			}),
			extendSelectionsBy: se(function(a, b) {
				var c = w(this.sel.ranges, a);
				sf(this, Y(this, c), b)
			}),
			setSelections: se(function(a, b, c) {
				var e, f, d = this;
				if(a.length) {
					for(e = [], f = 0; f < a.length; f++) e[f] = new oi(W(d, a[f].anchor), W(d, a[f].head));
					null == b && (b = g(a.length - 1, this.sel.primIndex)), xf(this, Pe(e, b), c)
				}
			}),
			addSelection: se(function(a, b, c) {
				var d = this.sel.ranges.slice(0);
				d.push(new oi(W(this, a), W(this, b || a))), xf(this, Pe(d, d.length - 1), c)
			}),
			getSelection: function(a) {
				for(var e, f, b = this, c = this.sel.ranges, d = 0; d < c.length; d++) f = I(b, c[d].from(), c[d].to()), e = e ? e.concat(f) : f;
				return !1 === a ? e : e.join(a || this.lineSeparator())
			},
			getSelections: function(a) {
				for(var f, b = this, c = [], d = this.sel.ranges, e = 0; e < d.length; e++) f = I(b, d[e].from(), d[e].to()), !1 !== a && (f = f.join(a || b.lineSeparator())), c[e] = f;
				return c
			},
			replaceSelection: function(a, b, c) {
				for(var d = [], e = 0; e < this.sel.ranges.length; e++) d[e] = a;
				this.replaceSelections(d, b, c || "+input")
			},
			replaceSelections: se(function(a, b, c) {
				var h, d, e, f, g, i, j;
				for(d = this, e = [], f = this.sel, g = 0; g < f.ranges.length; g++) h = f.ranges[g], e[g] = {
					from: h.from(),
					to: h.to(),
					text: d.splitLines(a[g]),
					origin: c
				};
				for(i = b && "end" != b && Ve(this, e, b), j = e.length - 1; j >= 0; j--) Hf(d, e[j]);
				i ? wf(this, i) : this.cm && Xd(this.cm)
			}),
			undo: se(function() {
				Jf(this, "undo")
			}),
			redo: se(function() {
				Jf(this, "redo")
			}),
			undoSelection: se(function() {
				Jf(this, "undo", !0)
			}),
			redoSelection: se(function() {
				Jf(this, "redo", !0)
			}),
			setExtending: function(a) {
				this.extend = a
			},
			getExtending: function() {
				return this.extend
			},
			historySize: function() {
				var a, b, c, d, e;
				for(a = this.history, b = 0, c = 0, d = 0; d < a.done.length; d++) a.done[d].ranges || ++b;
				for(e = 0; e < a.undone.length; e++) a.undone[e].ranges || ++c;
				return {
					undo: b,
					redo: c
				}
			},
			clearHistory: function() {
				this.history = new cf(this.history.maxGeneration)
			},
			markClean: function() {
				this.cleanGeneration = this.changeGeneration(!0)
			},
			changeGeneration: function(a) {
				return a && (this.history.lastOp = this.history.lastSelOp = this.history.lastOrigin = null), this.history.generation
			},
			isClean: function(a) {
				return this.history.generation == (a || this.cleanGeneration)
			},
			getHistory: function() {
				return {
					done: pf(this.history.done),
					undone: pf(this.history.undone)
				}
			},
			setHistory: function(a) {
				var b = this.history = new cf(this.history.maxGeneration);
				b.done = pf(a.done.slice(0), null, !0), b.undone = pf(a.undone.slice(0), null, !0)
			},
			setGutterMarker: se(function(a, b, c) {
				return Rf(this, a, "gutter", function(a) {
					var d = a.gutterMarkers || (a.gutterMarkers = {});
					return d[b] = c, !c && C(d) && (a.gutterMarkers = null), !0
				})
			}),
			clearGutter: se(function(a) {
				var b = this;
				this.iter(function(c) {
					c.gutterMarkers && c.gutterMarkers[a] && Rf(b, c, "gutter", function() {
						return c.gutterMarkers[a] = null, C(c.gutterMarkers) && (c.gutterMarkers = null), !0
					})
				})
			}),
			lineInfo: function(a) {
				var b;
				if("number" == typeof a) {
					if(!N(this, a)) return null;
					if(b = a, a = H(this, a), !a) return null
				} else if(b = L(a), null == b) return null;
				return {
					line: b,
					handle: a,
					text: a.text,
					gutterMarkers: a.gutterMarkers,
					textClass: a.textClass,
					bgClass: a.bgClass,
					wrapClass: a.wrapClass,
					widgets: a.widgets
				}
			},
			addLineClass: se(function(b, c, d) {
				return Rf(this, b, "gutter" == c ? "gutter" : "class", function(b) {
					var e = "text" == c ? "textClass" : "background" == c ? "bgClass" : "gutter" == c ? "gutterClass" : "wrapClass";
					if(b[e]) {
						if(a(d).test(b[e])) return !1;
						b[e] += " " + d
					} else b[e] = d;
					return !0
				})
			}),
			removeLineClass: se(function(b, c, d) {
				return Rf(this, b, "gutter" == c ? "gutter" : "class", function(b) {
					var g, h, e = "text" == c ? "textClass" : "background" == c ? "bgClass" : "gutter" == c ? "gutterClass" : "wrapClass",
						f = b[e];
					if(!f) return !1;
					if(null == d) b[e] = null;
					else {
						if(g = f.match(a(d)), !g) return !1;
						h = g.index + g[0].length, b[e] = f.slice(0, g.index) + (g.index && h != f.length ? " " : "") + f.slice(h) || null
					}
					return !0
				})
			}),
			addLineWidget: se(function(a, b, c) {
				return Tf(this, a, b, c)
			}),
			removeLineWidget: function(a) {
				a.clear()
			},
			markText: function(a, b, c) {
				return Uf(this, W(this, a), W(this, b), c, c && c.type || "range")
			},
			setBookmark: function(a, b) {
				var c = {
					replacedWith: b && (null == b.nodeType ? b.widget : b),
					insertLeft: b && b.insertLeft,
					clearWhenEmpty: !1,
					shared: b && b.shared,
					handleMouseEvents: b && b.handleMouseEvents
				};
				return a = W(this, a), Uf(this, a, a, c, "bookmark")
			},
			findMarksAt: function(a) {
				var b, c, e, d;
				if(a = W(this, a), b = [], c = H(this, a.line).markedSpans, c)
					for(d = 0; d < c.length; ++d) e = c[d], (null == e.from || e.from <= a.ch) && (null == e.to || e.to >= a.ch) && b.push(e.marker.parent || e.marker);
				return b
			},
			findMarks: function(a, b, c) {
				a = W(this, a), b = W(this, b);
				var d = [],
					e = a.line;
				return this.iter(a.line, b.line + 1, function(f) {
					var i, h, g = f.markedSpans;
					if(g)
						for(h = 0; h < g.length; h++) i = g[h], null != i.to && e == a.line && a.ch >= i.to || null == i.from && e != a.line || null != i.from && e == b.line && i.from >= b.ch || c && !c(i.marker) || d.push(i.marker.parent || i.marker);
					++e
				}), d
			},
			getAllMarks: function() {
				var a = [];
				return this.iter(function(b) {
					var d, c = b.markedSpans;
					if(c)
						for(d = 0; d < c.length; ++d) null != c[d].from && a.push(c[d].marker)
				}), a
			},
			posFromIndex: function(a) {
				var d, b = this.first,
					c = this.lineSeparator().length;
				return this.iter(function(e) {
					var f = e.text.length + c;
					return f > a ? (d = a, !0) : (a -= f, void++b)
				}), W(this, P(b, d))
			},
			indexFromPos: function(a) {
				var b, c;
				return a = W(this, a), b = a.ch, a.line < this.first || 0 > a.ch ? 0 : (c = this.lineSeparator().length, this.iter(this.first, a.line, function(a) {
					b += a.text.length + c
				}), b)
			},
			copy: function(a) {
				var b = new wi(J(this, this.first, this.first + this.size), this.modeOption, this.first, this.lineSep, this.direction);
				return b.scrollTop = this.scrollTop, b.scrollLeft = this.scrollLeft, b.sel = this.sel, b.extend = !1, a && (b.history.undoDepth = this.history.undoDepth, b.setHistory(this.getHistory())), b
			},
			linkedDoc: function(a) {
				var b, c, d;
				return a || (a = {}), b = this.first, c = this.first + this.size, null != a.from && a.from > b && (b = a.from), null != a.to && a.to < c && (c = a.to), d = new wi(J(this, b, c), a.mode || this.modeOption, b, this.lineSep, this.direction), a.sharedHist && (d.history = this.history), (this.linked || (this.linked = [])).push({
					doc: d,
					sharedHist: a.sharedHist
				}), d.linked = [{
					doc: this,
					isParent: !0,
					sharedHist: a.sharedHist
				}], Xf(d, Wf(this)), d
			},
			unlinkDoc: function(a) {
				var d, c, e, b = this;
				if(a instanceof Kg && (a = a.doc), this.linked)
					for(c = 0; c < this.linked.length; ++c)
						if(d = b.linked[c], d.doc == a) {
							b.linked.splice(c, 1), a.unlinkDoc(b), Yf(Wf(b));
							break
						}
				a.history == this.history && (e = [a.id], $e(a, function(a) {
					return e.push(a.id)
				}, !0), a.history = new cf(null), a.history.done = pf(this.history.done, e), a.history.undone = pf(this.history.undone, e))
			},
			iterLinkedDocs: function(a) {
				$e(this, a)
			},
			getMode: function() {
				return this.mode
			},
			getEditor: function() {
				return this.cm
			},
			splitLines: function(a) {
				return this.lineSep ? a.split(this.lineSep) : Rh(a)
			},
			lineSeparator: function() {
				return this.lineSep || "\n"
			},
			setDirection: se(function(a) {
				"rtl" != a && (a = "ltr"), a == this.direction || (this.direction = a, this.iter(function(a) {
					return a.order = null
				}), this.cm && bf(this.cm))
			})
		}), wi.prototype.eachLine = wi.prototype.iter;
		for(xi = 0, yi = !1, zi = {
				3: "Enter",
				8: "Backspace",
				9: "Tab",
				13: "Enter",
				16: "Shift",
				17: "Ctrl",
				18: "Alt",
				19: "Pause",
				20: "CapsLock",
				27: "Esc",
				32: "Space",
				33: "PageUp",
				34: "PageDown",
				35: "End",
				36: "Home",
				37: "Left",
				38: "Up",
				39: "Right",
				40: "Down",
				44: "PrintScrn",
				45: "Insert",
				46: "Delete",
				59: ";",
				61: "=",
				91: "Mod",
				92: "Mod",
				93: "Mod",
				106: "*",
				107: "=",
				109: "-",
				110: ".",
				111: "/",
				127: "Delete",
				173: "-",
				186: ";",
				187: "=",
				188: ",",
				189: "-",
				190: ".",
				191: "/",
				192: "`",
				219: "[",
				220: "\\",
				221: "]",
				222: "'",
				63232: "Up",
				63233: "Down",
				63234: "Left",
				63235: "Right",
				63272: "Delete",
				63273: "Home",
				63275: "End",
				63276: "PageUp",
				63277: "PageDown",
				63302: "Insert"
			}, Ai = 0; 10 > Ai; Ai++) zi[Ai + 48] = zi[Ai + 96] = Ai + "";
		for(Bi = 65; 90 >= Bi; Bi++) zi[Bi] = b(Bi);
		for(Ci = 1; 12 >= Ci; Ci++) zi[Ci + 111] = zi[Ci + 63235] = "F" + Ci;
		Di = {}, Di.basic = {
				Left: "goCharLeft",
				Right: "goCharRight",
				Up: "goLineUp",
				Down: "goLineDown",
				End: "goLineEnd",
				Home: "goLineStartSmart",
				PageUp: "goPageUp",
				PageDown: "goPageDown",
				Delete: "delCharAfter",
				Backspace: "delCharBefore",
				"Shift-Backspace": "delCharBefore",
				Tab: "defaultTab",
				"Shift-Tab": "indentAuto",
				Enter: "newlineAndIndent",
				Insert: "toggleOverwrite",
				Esc: "singleSelection"
			}, Di.pcDefault = {
				"Ctrl-A": "selectAll",
				"Ctrl-D": "deleteLine",
				"Ctrl-Z": "undo",
				"Shift-Ctrl-Z": "redo",
				"Ctrl-Y": "redo",
				"Ctrl-Home": "goDocStart",
				"Ctrl-End": "goDocEnd",
				"Ctrl-Up": "goLineUp",
				"Ctrl-Down": "goLineDown",
				"Ctrl-Left": "goGroupLeft",
				"Ctrl-Right": "goGroupRight",
				"Alt-Left": "goLineStart",
				"Alt-Right": "goLineEnd",
				"Ctrl-Backspace": "delGroupBefore",
				"Ctrl-Delete": "delGroupAfter",
				"Ctrl-S": "save",
				"Ctrl-F": "find",
				"Ctrl-G": "findNext",
				"Shift-Ctrl-G": "findPrev",
				"Shift-Ctrl-F": "replace",
				"Shift-Ctrl-R": "replaceAll",
				"Ctrl-[": "indentLess",
				"Ctrl-]": "indentMore",
				"Ctrl-U": "undoSelection",
				"Shift-Ctrl-U": "redoSelection",
				"Alt-U": "redoSelection",
				fallthrough: "basic"
			}, Di.emacsy = {
				"Ctrl-F": "goCharRight",
				"Ctrl-B": "goCharLeft",
				"Ctrl-P": "goLineUp",
				"Ctrl-N": "goLineDown",
				"Alt-F": "goWordRight",
				"Alt-B": "goWordLeft",
				"Ctrl-A": "goLineStart",
				"Ctrl-E": "goLineEnd",
				"Ctrl-V": "goPageDown",
				"Shift-Ctrl-V": "goPageUp",
				"Ctrl-D": "delCharAfter",
				"Ctrl-H": "delCharBefore",
				"Alt-D": "delWordAfter",
				"Alt-Backspace": "delWordBefore",
				"Ctrl-K": "killLine",
				"Ctrl-T": "transposeChars",
				"Ctrl-O": "openLine"
			}, Di.macDefault = {
				"Cmd-A": "selectAll",
				"Cmd-D": "deleteLine",
				"Cmd-Z": "undo",
				"Shift-Cmd-Z": "redo",
				"Cmd-Y": "redo",
				"Cmd-Home": "goDocStart",
				"Cmd-Up": "goDocStart",
				"Cmd-End": "goDocEnd",
				"Cmd-Down": "goDocEnd",
				"Alt-Left": "goGroupLeft",
				"Alt-Right": "goGroupRight",
				"Cmd-Left": "goLineLeft",
				"Cmd-Right": "goLineRight",
				"Alt-Backspace": "delGroupBefore",
				"Ctrl-Alt-Backspace": "delGroupAfter",
				"Alt-Delete": "delGroupAfter",
				"Cmd-S": "save",
				"Cmd-F": "find",
				"Cmd-G": "findNext",
				"Shift-Cmd-G": "findPrev",
				"Cmd-Alt-F": "replace",
				"Shift-Cmd-Alt-F": "replaceAll",
				"Cmd-[": "indentLess",
				"Cmd-]": "indentMore",
				"Cmd-Backspace": "delWrappedLineLeft",
				"Cmd-Delete": "delWrappedLineRight",
				"Cmd-U": "undoSelection",
				"Shift-Cmd-U": "redoSelection",
				"Ctrl-Up": "goDocStart",
				"Ctrl-Down": "goDocEnd",
				fallthrough: ["basic", "emacsy"]
			}, Di["default"] = sh ? Di.macDefault : Di.pcDefault, Ei = {
				selectAll: Ff,
				singleSelection: function(a) {
					return a.setSelection(a.getCursor("anchor"), a.getCursor("head"), Eh)
				},
				killLine: function(a) {
					return lg(a, function(b) {
						if(b.empty()) {
							var c = H(a.doc, b.head.line).text.length;
							return b.head.ch == c && b.head.line < a.lastLine() ? {
								from: b.head,
								to: P(b.head.line + 1, 0)
							} : {
								from: b.head,
								to: P(b.head.line, c)
							}
						}
						return {
							from: b.from(),
							to: b.to()
						}
					})
				},
				deleteLine: function(a) {
					return lg(a, function(b) {
						return {
							from: P(b.from().line, 0),
							to: W(a.doc, P(b.to().line + 1, 0))
						}
					})
				},
				delLineLeft: function(a) {
					return lg(a, function(a) {
						return {
							from: P(a.from().line, 0),
							to: a.from()
						}
					})
				},
				delWrappedLineLeft: function(a) {
					return lg(a, function(b) {
						var c = a.charCoords(b.head, "div").top + 5,
							d = a.coordsChar({
								left: 0,
								top: c
							}, "div");
						return {
							from: d,
							to: b.from()
						}
					})
				},
				delWrappedLineRight: function(a) {
					return lg(a, function(b) {
						var c = a.charCoords(b.head, "div").top + 5,
							d = a.coordsChar({
								left: a.display.lineDiv.offsetWidth + 100,
								top: c
							}, "div");
						return {
							from: b.from(),
							to: d
						}
					})
				},
				undo: function(a) {
					return a.undo()
				},
				redo: function(a) {
					return a.redo()
				},
				undoSelection: function(a) {
					return a.undoSelection()
				},
				redoSelection: function(a) {
					return a.redoSelection()
				},
				goDocStart: function(a) {
					return a.extendSelection(P(a.firstLine(), 0))
				},
				goDocEnd: function(a) {
					return a.extendSelection(P(a.lastLine()))
				},
				goLineStart: function(a) {
					return a.extendSelectionsBy(function(b) {
						return mg(a, b.head.line)
					}, {
						origin: "+move",
						bias: 1
					})
				},
				goLineStartSmart: function(a) {
					return a.extendSelectionsBy(function(b) {
						return og(a, b.head)
					}, {
						origin: "+move",
						bias: 1
					})
				},
				goLineEnd: function(a) {
					return a.extendSelectionsBy(function(b) {
						return ng(a, b.head.line)
					}, {
						origin: "+move",
						bias: -1
					})
				},
				goLineRight: function(a) {
					return a.extendSelectionsBy(function(b) {
						var c = a.charCoords(b.head, "div").top + 5;
						return a.coordsChar({
							left: a.display.lineDiv.offsetWidth + 100,
							top: c
						}, "div")
					}, Gh)
				},
				goLineLeft: function(a) {
					return a.extendSelectionsBy(function(b) {
						var c = a.charCoords(b.head, "div").top + 5;
						return a.coordsChar({
							left: 0,
							top: c
						}, "div")
					}, Gh)
				},
				goLineLeftSmart: function(a) {
					return a.extendSelectionsBy(function(b) {
						var c = a.charCoords(b.head, "div").top + 5,
							d = a.coordsChar({
								left: 0,
								top: c
							}, "div");
						return d.ch < a.getLine(d.line).search(/\S/) ? og(a, b.head) : d
					}, Gh)
				},
				goLineUp: function(a) {
					return a.moveV(-1, "line")
				},
				goLineDown: function(a) {
					return a.moveV(1, "line")
				},
				goPageUp: function(a) {
					return a.moveV(-1, "page")
				},
				goPageDown: function(a) {
					return a.moveV(1, "page")
				},
				goCharLeft: function(a) {
					return a.moveH(-1, "char")
				},
				goCharRight: function(a) {
					return a.moveH(1, "char")
				},
				goColumnLeft: function(a) {
					return a.moveH(-1, "column")
				},
				goColumnRight: function(a) {
					return a.moveH(1, "column")
				},
				goWordLeft: function(a) {
					return a.moveH(-1, "word")
				},
				goGroupRight: function(a) {
					return a.moveH(1, "group")
				},
				goGroupLeft: function(a) {
					return a.moveH(-1, "group")
				},
				goWordRight: function(a) {
					return a.moveH(1, "word")
				},
				delCharBefore: function(a) {
					return a.deleteH(-1, "char")
				},
				delCharAfter: function(a) {
					return a.deleteH(1, "char")
				},
				delWordBefore: function(a) {
					return a.deleteH(-1, "word")
				},
				delWordAfter: function(a) {
					return a.deleteH(1, "word")
				},
				delGroupBefore: function(a) {
					return a.deleteH(-1, "group")
				},
				delGroupAfter: function(a) {
					return a.deleteH(1, "group")
				},
				indentAuto: function(a) {
					return a.indentSelection("smart")
				},
				indentMore: function(a) {
					return a.indentSelection("add")
				},
				indentLess: function(a) {
					return a.indentSelection("subtract")
				},
				insertTab: function(a) {
					return a.replaceSelection("	")
				},
				insertSoftTab: function(a) {
					var b, c, d, e, f, g;
					for(b = [], c = a.listSelections(), d = a.options.tabSize, e = 0; e < c.length; e++) f = c[e].from(), g = r(a.getLine(f.line), f.ch, d), b.push(u(d - g % d));
					a.replaceSelections(b)
				},
				defaultTab: function(a) {
					a.somethingSelected() ? a.indentSelection("add") : a.execCommand("insertTab")
				},
				transposeChars: function(a) {
					return pe(a, function() {
						var b, c, d, e, f, g;
						for(b = a.listSelections(), c = [], d = 0; d < b.length; d++) b[d].empty() && (e = b[d].head, f = H(a.doc, e.line).text, f && (e.ch == f.length && (e = new P(e.line, e.ch - 1)), 0 < e.ch ? (e = new P(e.line, e.ch + 1), a.replaceRange(f.charAt(e.ch - 1) + f.charAt(e.ch - 2), P(e.line, e.ch - 2), e, "+transpose")) : e.line > a.doc.first && (g = H(a.doc, e.line - 1).text, g && (e = new P(e.line, 1), a.replaceRange(f.charAt(0) + a.doc.lineSeparator() + g.charAt(g.length - 1), P(e.line - 1, g.length - 1), e, "+transpose")))), c.push(new oi(e, e)));
						a.setSelections(c)
					})
				},
				newlineAndIndent: function(a) {
					return pe(a, function() {
						var b, c, d;
						for(b = a.listSelections(), c = b.length - 1; c >= 0; c--) a.replaceRange(a.doc.lineSeparator(), b[c].anchor, b[c].head, "+input");
						for(b = a.listSelections(), d = 0; d < b.length; d++) a.indentLine(b[d].from().line, null, !0);
						Xd(a)
					})
				},
				openLine: function(a) {
					return a.replaceSelection("\n", "start")
				},
				toggleOverwrite: function(a) {
					return a.toggleOverwrite()
				}
			}, Fi = new Bh, Gi = null, Hi = {
				toString: function() {
					return "CodeMirror.Init"
				}
			}, Ii = {}, Ji = {}, Kg.defaults = Ii, Kg.optionHandlers = Ji, Mi = [], Kg.defineInitHook = function(a) {
				return Mi.push(a)
			}, Ni = null, Oi = function(a) {
				this.cm = a, this.lastAnchorNode = this.lastAnchorOffset = this.lastFocusNode = this.lastFocusOffset = null, this.polling = new Bh, this.composing = null, this.gracePeriod = !1, this.readDOMTimeout = null
			}, Oi.prototype.init = function(a) {
				function b(a) {
					var b, c, g, h, i;
					if(!Lb(e, a)) {
						if(e.somethingSelected()) Ng({
							lineWise: !1,
							text: e.getSelections()
						}), "cut" == a.type && e.replaceSelection("", null, "cut");
						else {
							if(!e.options.lineWiseCopyCut) return;
							b = Rg(e), Ng({
								lineWise: !0,
								text: b.text
							}), "cut" == a.type && e.operation(function() {
								e.setSelections(b.ranges, 0, Eh), e.replaceSelection("", null, "cut")
							})
						}
						if(a.clipboardData && (a.clipboardData.clearData(), c = Ni.text.join("\n"), a.clipboardData.setData("Text", c), a.clipboardData.getData("Text") == c)) return void a.preventDefault();
						g = Tg(), h = g.firstChild, e.display.lineSpace.insertBefore(g, e.display.lineSpace.firstChild), h.value = Ni.text.join("\n"), i = document.activeElement, Ah(h), setTimeout(function() {
							e.display.lineSpace.removeChild(g), i.focus(), i == f && d.showPrimarySelection()
						}, 50)
					}
				}
				var c = this,
					d = this,
					e = d.cm,
					f = d.div = a.lineDiv;
				Sg(f, e.options.spellcheck), Ph(f, "paste", function(a) {
					Lb(e, a) || Pg(a, e) || 11 >= hh && setTimeout(qe(e, function() {
						return c.updateFromDOM()
					}), 20)
				}), Ph(f, "compositionstart", function(a) {
					c.composing = {
						data: a.data,
						done: !1
					}
				}), Ph(f, "compositionupdate", function(a) {
					c.composing || (c.composing = {
						data: a.data,
						done: !1
					})
				}), Ph(f, "compositionend", function(a) {
					c.composing && (a.data != c.composing.data && c.readFromDOMSoon(), c.composing.done = !0)
				}), Ph(f, "touchstart", function() {
					return d.forceCompositionEnd()
				}), Ph(f, "input", function() {
					c.composing || c.readFromDOMSoon()
				}), Ph(f, "copy", b), Ph(f, "cut", b)
			}, Oi.prototype.prepareSelection = function() {
				var a = Fd(this.cm, !1);
				return a.focus = this.cm.state.focused, a
			}, Oi.prototype.showSelection = function(a, b) {
				a && this.cm.display.view.length && ((a.focus || b) && this.showPrimarySelection(), this.showMultipleSelections(a))
			}, Oi.prototype.showPrimarySelection = function() {
				var f, g, h, i, j, k, l, n, m, a = window.getSelection(),
					b = this.cm,
					c = b.doc.sel.primary(),
					d = c.from(),
					e = c.to();
				if(b.display.viewTo == b.display.viewFrom || d.line >= b.display.viewTo || e.line < b.display.viewFrom) return void a.removeAllRanges();
				if(f = $g(b, a.anchorNode, a.anchorOffset), g = $g(b, a.focusNode, a.focusOffset), !f || f.bad || !g || g.bad || 0 != Q(U(f, g), d) || 0 != Q(T(f, g), e)) {
					if(h = b.display.view, i = d.line >= b.display.viewFrom && Wg(b, d) || {
							node: h[0].measure.map[2],
							offset: 0
						}, j = e.line < b.display.viewTo && Wg(b, e), j || (k = h[h.length - 1].measure, l = k.maps ? k.maps[k.maps.length - 1] : k.map, j = {
							node: l[l.length - 1],
							offset: l[l.length - 2] - l[l.length - 3]
						}), !i || !j) return void a.removeAllRanges();
					m = a.rangeCount && a.getRangeAt(0);
					try {
						n = zh(i.node, i.offset, j.offset, j.node)
					} catch(b) {}
					n && (!ch && b.state.focused ? (a.collapse(i.node, i.offset), !n.collapsed && (a.removeAllRanges(), a.addRange(n))) : (a.removeAllRanges(), a.addRange(n)), m && null == a.anchorNode ? a.addRange(m) : ch && this.startGracePeriod()), this.rememberSelection()
				}
			}, Oi.prototype.startGracePeriod = function() {
				var a = this;
				clearTimeout(this.gracePeriod), this.gracePeriod = setTimeout(function() {
					a.gracePeriod = !1, a.selectionChanged() && a.cm.operation(function() {
						return a.cm.curOp.selectionChanged = !0
					})
				}, 20)
			}, Oi.prototype.showMultipleSelections = function(a) {
				i(this.cm.display.cursorDiv, a.cursors), i(this.cm.display.selectionDiv, a.selection)
			}, Oi.prototype.rememberSelection = function() {
				var a = window.getSelection();
				this.lastAnchorNode = a.anchorNode, this.lastAnchorOffset = a.anchorOffset, this.lastFocusNode = a.focusNode, this.lastFocusOffset = a.focusOffset
			}, Oi.prototype.selectionInEditor = function() {
				var b, a = window.getSelection();
				return a.rangeCount ? (b = a.getRangeAt(0).commonAncestorContainer, l(this.div, b)) : !1
			}, Oi.prototype.focus = function() {
				"nocursor" != this.cm.options.readOnly && (!this.selectionInEditor() && this.showSelection(this.prepareSelection(), !0), this.div.focus())
			}, Oi.prototype.blur = function() {
				this.div.blur()
			}, Oi.prototype.getField = function() {
				return this.div
			}, Oi.prototype.supportsTouch = function() {
				return !0
			}, Oi.prototype.receivedFocus = function() {
				function a() {
					b.cm.state.focused && (b.pollSelection(), b.polling.set(b.cm.options.pollInterval, a))
				}
				var b = this;
				this.selectionInEditor() ? this.pollSelection() : pe(this.cm, function() {
					return b.cm.curOp.selectionChanged = !0
				}), this.polling.set(this.cm.options.pollInterval, a)
			}, Oi.prototype.selectionChanged = function() {
				var a = window.getSelection();
				return a.anchorNode != this.lastAnchorNode || a.anchorOffset != this.lastAnchorOffset || a.focusNode != this.lastFocusNode || a.focusOffset != this.lastFocusOffset
			}, Oi.prototype.pollSelection = function() {
				var a, b, c, d;
				if(null == this.readDOMTimeout && !this.gracePeriod && this.selectionChanged()) {
					if(a = window.getSelection(), b = this.cm, qh && kh && this.cm.options.gutters.length && Xg(a.anchorNode)) return this.cm.triggerOnKeyDown({
						type: "keydown",
						keyCode: 8,
						preventDefault: f
					}), this.blur(), void this.focus();
					this.composing || (this.rememberSelection(), c = $g(b, a.anchorNode, a.anchorOffset), d = $g(b, a.focusNode, a.focusOffset), c && d && pe(b, function() {
						xf(b.doc, Qe(c, d), Eh), (c.bad || d.bad) && (b.curOp.selectionChanged = !0)
					}))
				}
			}, Oi.prototype.pollContent = function() {
				var a, b, c, d, e, f, h, i, k, l, j, m, n, o, p, q, r, s, t, u, w, x, y;
				if(null != this.readDOMTimeout && (clearTimeout(this.readDOMTimeout), this.readDOMTimeout = null), a = this.cm, b = a.display, c = a.doc.sel.primary(), d = c.from(), e = c.to(), 0 == d.ch && d.line > a.firstLine() && (d = P(d.line - 1, H(a.doc, d.line - 1).length)), e.ch == H(a.doc, e.line).text.length && e.line < a.lastLine() && (e = P(e.line + 1, 0)), d.line < b.viewFrom || e.line > b.viewTo - 1) return !1;
				if(d.line == b.viewFrom || 0 == (f = Dd(a, d.line)) ? (h = L(b.view[0].line), i = b.view[0].node) : (h = L(b.view[f].line), i = b.view[f - 1].node.nextSibling), j = Dd(a, e.line), j == b.view.length - 1 ? (k = b.viewTo - 1, l = b.lineDiv.lastChild) : (k = L(b.view[j + 1].line) - 1, l = b.view[j + 1].node.previousSibling), !i) return !1;
				for(m = a.doc.splitLines(Zg(a, i, l, h, k)), n = I(a.doc, P(h, 0), P(k, H(a.doc, k).text.length)); 1 < m.length && 1 < n.length;)
					if(v(m) == v(n)) m.pop(), n.pop(), k--;
					else {
						if(m[0] != n[0]) break;
						m.shift(), n.shift(), h++
					}
				for(o = 0, p = 0, q = m[0], r = n[0], s = g(q.length, r.length); s > o && q.charCodeAt(o) == r.charCodeAt(o);) ++o;
				for(t = v(m), u = v(n), w = g(t.length - (1 == m.length ? o : 0), u.length - (1 == n.length ? o : 0)); w > p && t.charCodeAt(t.length - p - 1) == u.charCodeAt(u.length - p - 1);) ++p;
				if(1 == m.length && 1 == n.length && h == d.line)
					for(; o && o > d.ch && t.charCodeAt(t.length - p - 1) == u.charCodeAt(u.length - p - 1);) o--, p++;
				return m[m.length - 1] = t.slice(0, t.length - p).replace(/^\u200b+/, ""), m[0] = m[0].slice(o).replace(/\u200b+$/, ""), x = P(h, o), y = P(k, n.length ? v(n).length - p : 0), 1 < m.length || m[0] || Q(x, y) ? (Nf(a.doc, m, x, y, "+input"), !0) : void 0
			}, Oi.prototype.ensurePolled = function() {
				this.forceCompositionEnd()
			}, Oi.prototype.reset = function() {
				this.forceCompositionEnd()
			}, Oi.prototype.forceCompositionEnd = function() {
				this.composing && (clearTimeout(this.readDOMTimeout), this.composing = null, this.updateFromDOM(), this.div.blur(), this.div.focus())
			}, Oi.prototype.readFromDOMSoon = function() {
				var a = this;
				null != this.readDOMTimeout || (this.readDOMTimeout = setTimeout(function() {
					if(a.readDOMTimeout = null, a.composing) {
						if(!a.composing.done) return;
						a.composing = null
					}
					a.updateFromDOM()
				}, 80))
			}, Oi.prototype.updateFromDOM = function() {
				var a = this;
				(this.cm.isReadOnly() || !this.pollContent()) && pe(this.cm, function() {
					return te(a.cm)
				})
			}, Oi.prototype.setUneditable = function(a) {
				a.contentEditable = "false"
			}, Oi.prototype.onKeyPress = function(a) {
				0 == a.charCode || (a.preventDefault(), !this.cm.isReadOnly() && qe(this.cm, Og)(this.cm, b(null == a.charCode ? a.keyCode : a.charCode), 0))
			}, Oi.prototype.readOnlyChanged = function(a) {
				this.div.contentEditable = ("nocursor" != a) + ""
			}, Oi.prototype.onContextMenu = function() {}, Oi.prototype.resetPosition = function() {}, Oi.prototype.needsContentAttribute = !0, Pi = function(a) {
				this.cm = a, this.prevInput = "", this.pollingFast = !1, this.polling = new Bh, this.inaccurateSelection = !1, this.hasSelection = !1, this.composing = null
			}, Pi.prototype.init = function(a) {
				function b(a) {
					if(!Lb(e, a)) {
						if(e.somethingSelected()) Ng({
							lineWise: !1,
							text: e.getSelections()
						}), d.inaccurateSelection && (d.prevInput = "", d.inaccurateSelection = !1, g.value = Ni.text.join("\n"), Ah(g));
						else {
							if(!e.options.lineWiseCopyCut) return;
							var b = Rg(e);
							Ng({
								lineWise: !0,
								text: b.text
							}), "cut" == a.type ? e.setSelections(b.ranges, null, Eh) : (d.prevInput = "", g.value = b.text.join("\n"), Ah(g))
						}
						"cut" == a.type && (e.state.cutIncoming = !0)
					}
				}
				var c = this,
					d = this,
					e = this.cm,
					f = this.wrapper = Tg(),
					g = this.textarea = f.firstChild;
				a.wrapper.insertBefore(f, a.wrapper.firstChild), ph && (g.style.width = "0px"), Ph(g, "input", function() {
					gh && hh >= 9 && c.hasSelection && (c.hasSelection = null), d.poll()
				}), Ph(g, "paste", function(a) {
					Lb(e, a) || Pg(a, e) || (e.state.pasteIncoming = !0, d.fastPoll())
				}), Ph(g, "cut", b), Ph(g, "copy", b), Ph(a.scroller, "paste", function(b) {
					Rc(a, b) || Lb(e, b) || (e.state.pasteIncoming = !0, d.focus())
				}), Ph(a.lineSpace, "selectstart", function(b) {
					Rc(a, b) || Pb(b)
				}), Ph(g, "compositionstart", function() {
					var a = e.getCursor("from");
					d.composing && d.composing.range.clear(), d.composing = {
						start: a,
						range: e.markText(a, e.getCursor("to"), {
							className: "CodeMirror-composing"
						})
					}
				}), Ph(g, "compositionend", function() {
					d.composing && (d.poll(), d.composing.range.clear(), d.composing = null)
				})
			}, Pi.prototype.prepareSelection = function() {
				var f, h, i, a = this.cm,
					b = a.display,
					c = a.doc,
					e = Fd(a);
				return a.options.moveInputWithCursor && (f = pd(a, c.sel.primary().head, "div"), h = b.wrapper.getBoundingClientRect(), i = b.lineDiv.getBoundingClientRect(), e.teTop = d(0, g(b.wrapper.clientHeight - 10, f.top + i.top - h.top)), e.teLeft = d(0, g(b.wrapper.clientWidth - 10, f.left + i.left - h.left))), e
			}, Pi.prototype.showSelection = function(a) {
				var b = this.cm,
					c = b.display;
				i(c.cursorDiv, a.cursors), i(c.selectionDiv, a.selection), null != a.teTop && (this.wrapper.style.top = a.teTop + "px", this.wrapper.style.left = a.teLeft + "px")
			}, Pi.prototype.reset = function(a) {
				var d, e, b, c, f, g;
				this.contextMenuPending || this.composing || (b = this.cm, c = b.doc, b.somethingSelected() ? (this.prevInput = "", f = c.sel.primary(), d = Th && (100 < f.to().line - f.from().line || 1e3 < (e = b.getSelection()).length), g = d ? "-" : e || b.getSelection(), this.textarea.value = g, b.state.focused && Ah(this.textarea), gh && hh >= 9 && (this.hasSelection = g)) : a || (this.prevInput = this.textarea.value = "", gh && hh >= 9 && (this.hasSelection = null)), this.inaccurateSelection = d)
			}, Pi.prototype.getField = function() {
				return this.textarea
			}, Pi.prototype.supportsTouch = function() {
				return !1
			}, Pi.prototype.focus = function() {
				if("nocursor" != this.cm.options.readOnly && (!rh || m() != this.textarea)) try {
					this.textarea.focus()
				} catch(a) {}
			}, Pi.prototype.blur = function() {
				this.textarea.blur()
			}, Pi.prototype.resetPosition = function() {
				this.wrapper.style.top = this.wrapper.style.left = 0
			}, Pi.prototype.receivedFocus = function() {
				this.slowPoll()
			}, Pi.prototype.slowPoll = function() {
				var a = this;
				this.pollingFast || this.polling.set(this.cm.options.pollInterval, function() {
					a.poll(), a.cm.state.focused && a.slowPoll()
				})
			}, Pi.prototype.fastPoll = function() {
				function a() {
					var d = c.poll();
					d || b ? (c.pollingFast = !1, c.slowPoll()) : (b = !0, c.polling.set(60, a))
				}
				var b = !1,
					c = this;
				c.pollingFast = !0, c.polling.set(20, a)
			}, Pi.prototype.poll = function() {
				var e, f, h, i, a = this,
					b = this.cm,
					c = this.textarea,
					d = this.prevInput;
				if(this.contextMenuPending || !b.state.focused || Sh(c) && !d && !this.composing || b.isReadOnly() || b.options.disableInput || b.state.keySeq) return !1;
				if(e = c.value, e == d && !b.somethingSelected()) return !1;
				if(gh && hh >= 9 && this.hasSelection === e || sh && /[\uf700-\uf7ff]/.test(e)) return b.display.input.reset(), !1;
				if(b.doc.sel == b.display.selForContextMenu && (f = e.charCodeAt(0), 8203 != f || d || (d = "​"), 8666 == f)) return this.reset(), this.cm.execCommand("undo");
				for(h = 0, i = g(d.length, e.length); i > h && d.charCodeAt(h) == e.charCodeAt(h);) ++h;
				return pe(b, function() {
					Og(b, e.slice(h), d.length - h, null, a.composing ? "*compose" : null), 1e3 < e.length || -1 < e.indexOf("\n") ? c.value = a.prevInput = "" : a.prevInput = e, a.composing && (a.composing.range.clear(), a.composing.range = b.markText(a.composing.start, b.getCursor("to"), {
						className: "CodeMirror-composing"
					}))
				}), !0
			}, Pi.prototype.ensurePolled = function() {
				this.pollingFast && this.poll() && (this.pollingFast = !1)
			}, Pi.prototype.onKeyPress = function() {
				gh && hh >= 9 && (this.hasSelection = null), this.fastPoll()
			}, Pi.prototype.onContextMenu = function(a) {
				function b() {
					if(null != g.selectionStart) {
						var a = e.somethingSelected(),
							b = "​" + (a ? g.value : "");
						g.value = "⇚", g.value = b, d.prevInput = a ? "" : "​", g.selectionStart = 1, g.selectionEnd = b.length, f.selForContextMenu = e.doc.sel
					}
				}

				function c() {
					if(d.contextMenuPending = !1, d.wrapper.style.cssText = l, g.style.cssText = k, gh && 9 > hh && f.scrollbars.setScrollTop(f.scroller.scrollTop = i), null != g.selectionStart) {
						(!gh || gh && 9 > hh) && b();
						var a = 0,
							c = function() {
								f.selForContextMenu == e.doc.sel && 0 == g.selectionStart && 0 < g.selectionEnd && "​" == d.prevInput ? qe(e, Ff)(e) : 10 > a++ ? f.detectingSelectAll = setTimeout(c, 500) : (f.selForContextMenu = null, f.input.reset())
							};
						f.detectingSelectAll = setTimeout(c, 200)
					}
				}
				var j, k, l, m, n, o, d = this,
					e = d.cm,
					f = e.display,
					g = d.textarea,
					h = Cd(e, a),
					i = f.scroller.scrollTop;
				h && !lh && (j = e.options.resetSelectionOnContextMenu, j && -1 == e.doc.sel.contains(h) && qe(e, xf)(e.doc, Qe(h), Eh), k = g.style.cssText, l = d.wrapper.style.cssText, d.wrapper.style.cssText = "position: absolute", m = d.wrapper.getBoundingClientRect(), g.style.cssText = "position: absolute; width: 30px; height: 30px;\n      top: " + (a.clientY - m.top - 5) + "px; left: " + (a.clientX - m.left - 5) + "px;\n      z-index: 1000; background: " + (gh ? "rgba(255, 255, 255, .05)" : "transparent") + ";\n      outline: none; border-width: 0; outline: none; overflow: hidden; opacity: .05; filter: alpha(opacity=5);", ih && (n = window.scrollY), f.input.focus(), ih && window.scrollTo(null, n), f.input.reset(), e.somethingSelected() || (g.value = d.prevInput = " "), d.contextMenuPending = !0, f.selForContextMenu = e.doc.sel, clearTimeout(f.detectingSelectAll), gh && hh >= 9 && b(), xh ? (Sb(a), o = function() {
					Jb(window, "mouseup", o), setTimeout(c, 20)
				}, Ph(window, "mouseup", o)) : setTimeout(c, 50))
			}, Pi.prototype.readOnlyChanged = function(a) {
				a || this.reset()
			}, Pi.prototype.setUneditable = function() {}, Pi.prototype.needsContentAttribute = !1,
			function(a) {
				function b(b, d, e, f) {
					a.defaults[b] = d, e && (c[b] = f ? function(a, b, c) {
						c != Hi && e(a, b, c)
					} : e)
				}
				var c = a.optionHandlers;
				a.defineOption = b, a.Init = Hi, b("value", "", function(a, b) {
					return a.setValue(b)
				}, !0), b("mode", null, function(a, b) {
					a.doc.modeOption = b, We(a)
				}, !0), b("indentUnit", 2, We, !0), b("indentWithTabs", !1), b("smartIndent", !0), b("tabSize", 4, function(a) {
					Xe(a), jd(a), te(a)
				}, !0), b("lineSeparator", null, function(a, b) {
					var c, d, e;
					if(a.doc.lineSep = b, !!b)
						for(c = [], d = a.doc.first, a.doc.iter(function(a) {
								for(var f, e = 0; f = a.text.indexOf(b, e), -1 != f;) e = f + b.length, c.push(P(d, f));
								d++
							}), e = c.length - 1; e >= 0; e--) Nf(a.doc, b, c[e], P(c[e].line, c[e].ch + b.length))
				}), b("specialChars", /[\u0000-\u001f\u007f-\u009f\u00ad\u061c\u200b-\u200f\u2028\u2029\ufeff]/g, function(a, b, c) {
					a.state.specialChars = new RegExp(b.source + (b.test("	") ? "" : "|	"), "g"), c != Hi && a.refresh()
				}), b("specialCharPlaceholder", rc, function(a) {
					return a.refresh()
				}, !0), b("electricChars", !0), b("inputStyle", rh ? "contenteditable" : "textarea", function() {
					throw new Error("inputStyle can not (yet) be changed in a running editor")
				}, !0), b("spellcheck", !1, function(a, b) {
					return a.getInputField().spellcheck = b
				}, !0), b("rtlMoveVisually", !uh), b("wholeLineUpdateBefore", !0), b("theme", "default", function(a) {
					Gg(a), Hg(a)
				}, !0), b("keyMap", "default", function(a, b, c) {
					var d = kg(b),
						e = c != Hi && kg(c);
					e && e.detach && e.detach(a, d), d.attach && d.attach(a, e || null)
				}), b("extraKeys", null), b("lineWrapping", !1, Jg, !0), b("gutters", [], function(a) {
					Le(a.options), Hg(a)
				}, !0), b("fixedGutter", !0, function(a, b) {
					a.display.gutters.style.left = b ? zd(a.display) + "px" : "0", a.refresh()
				}, !0), b("coverGutterNextToScrollbar", !1, function(a) {
					return ee(a)
				}, !0), b("scrollbarStyle", "native", function(a) {
					ge(a), ee(a), a.display.scrollbars.setScrollTop(a.doc.scrollTop), a.display.scrollbars.setScrollLeft(a.doc.scrollLeft)
				}, !0), b("lineNumbers", !1, function(a) {
					Le(a.options), Hg(a)
				}, !0), b("firstLineNumber", 1, Hg, !0), b("lineNumberFormatter", function(a) {
					return a
				}, Hg, !0), b("showCursorWhenSelecting", !1, Ed, !0), b("resetSelectionOnContextMenu", !0), b("lineWiseCopyCut", !0), b("readOnly", !1, function(a, b) {
					"nocursor" == b ? (Md(a), a.display.input.blur(), a.display.disabled = !0) : a.display.disabled = !1, a.display.input.readOnlyChanged(b)
				}), b("disableInput", !1, function(a, b) {
					b || a.display.input.reset()
				}, !0), b("dragDrop", !0, Ig), b("allowDropFileTypes", null), b("cursorBlinkRate", 530), b("cursorScrollMargin", 0), b("cursorHeight", 1, Ed, !0), b("singleCursorHeightPerLine", !0, Ed, !0), b("workTime", 100), b("workDelay", 100), b("flattenSpans", !0, Xe, !0), b("addModeClass", !1, Xe, !0), b("pollInterval", 100), b("undoDepth", 200, function(a, b) {
					return a.doc.history.undoDepth = b
				}), b("historyEventDelay", 1250), b("viewportMargin", 10, function(a) {
					return a.refresh()
				}, !0), b("maxHighlightLength", 1e4, Xe, !0), b("moveInputWithCursor", !0, function(a, b) {
					b || a.display.input.resetPosition()
				}), b("tabindex", null, function(a, b) {
					return a.display.input.getField().tabIndex = b || ""
				}), b("autofocus", null), b("direction", "ltr", function(a, b) {
					return a.doc.setDirection(b)
				}, !0)
			}(Kg),
			function(a) {
				var b = a.optionHandlers,
					c = a.helpers = {};
				a.prototype = {
					constructor: a,
					focus: function() {
						window.focus(), this.display.input.focus()
					},
					setOption: function(a, c) {
						var d = this.options,
							e = d[a];
						d[a] == c && "mode" != a || (d[a] = c, b.hasOwnProperty(a) && qe(this, b[a])(this, c, e), Kb(this, "optionChange", this, a))
					},
					getOption: function(a) {
						return this.options[a]
					},
					getDoc: function() {
						return this.doc
					},
					addKeyMap: function(a, b) {
						this.state.keyMaps[b ? "push" : "unshift"](kg(a))
					},
					removeKeyMap: function(a) {
						for(var b = this.state.keyMaps, c = 0; c < b.length; ++c)
							if(b[c] == a || b[c].name == a) return b.splice(c, 1), !0
					},
					addOverlay: re(function(b, c) {
						var d = b.token ? b : a.getMode(this.options, b);
						if(d.startState) throw new Error("Overlays may not be stateful.");
						x(this.state.overlays, {
							mode: d,
							modeSpec: b,
							opaque: c && c.opaque,
							priority: c && c.priority || 0
						}, function(a) {
							return a.priority
						}), this.state.modeGen++, te(this)
					}),
					removeOverlay: re(function(a) {
						for(var e, b = this, c = this.state.overlays, d = 0; d < c.length; ++d)
							if(e = c[d].modeSpec, e == a || "string" == typeof a && e.name == a) return c.splice(d, 1), b.state.modeGen++, void te(b)
					}),
					indentLine: re(function(a, b, c) {
						"string" != typeof b && "number" != typeof b && (b = null == b ? this.options.smartIndent ? "smart" : "prev" : b ? "add" : "subtract"), N(this.doc, a) && Mg(this, a, b, c)
					}),
					indentSelection: re(function(a) {
						var h, b, c, e, f, i, j, k, l, m;
						for(b = this, c = this.doc.sel.ranges, e = -1, f = 0; f < c.length; f++)
							if(h = c[f], h.empty()) h.head.line > e && (Mg(b, h.head.line, a, !0), e = h.head.line, f == b.doc.sel.primIndex && Xd(b));
							else {
								for(i = h.from(), j = h.to(), k = d(e, i.line), e = g(b.lastLine(), j.line - (j.ch ? 0 : 1)) + 1, l = k; e > l; ++l) Mg(b, l, a);
								m = b.doc.sel.ranges, 0 == i.ch && c.length == m.length && 0 < m[f].from().ch && tf(b.doc, f, new oi(i, m[f].to()), Eh)
							}
					}),
					getTokenAt: function(a, b) {
						return jc(this, a, b)
					},
					getLineTokens: function(a, b) {
						return jc(this, P(a), b, !0)
					},
					getTokenTypeAt: function(a) {
						var f, b, c, d, e, g, h;
						if(a = W(this.doc, a), b = ec(this, H(this.doc, a.line)), c = 0, d = (b.length - 1) / 2, e = a.ch, 0 == e) f = b[2];
						else
							for(;;)
								if(g = c + d >> 1, (g ? b[2 * g - 1] : 0) >= e) d = g;
								else {
									if(!(b[2 * g + 1] < e)) {
										f = b[2 * g + 2];
										break
									}
									c = g + 1
								} return h = f ? f.indexOf("overlay ") : -1, 0 > h ? f : 0 == h ? null : f.slice(0, h - 1)
					},
					getModeAt: function(b) {
						var c = this.doc.mode;
						return c.innerMode ? a.innerMode(c, this.getTokenAt(b).state).mode : c
					},
					getHelper: function(a, b) {
						return this.getHelpers(a, b)[0]
					},
					getHelpers: function(a, b) {
						var f, g, i, h, k, j, d = this,
							e = [];
						if(!c.hasOwnProperty(b)) return e;
						if(f = c[b], g = this.getModeAt(a), "string" == typeof g[b]) f[g[b]] && e.push(f[g[b]]);
						else if(g[b])
							for(h = 0; h < g[b].length; h++) i = f[g[b][h]], i && e.push(i);
						else g.helperType && f[g.helperType] ? e.push(f[g.helperType]) : f[g.name] && e.push(f[g.name]);
						for(j = 0; j < f._global.length; j++) k = f._global[j], k.pred(g, d) && -1 == s(e, k.val) && e.push(k.val);
						return e
					},
					getStateAfter: function(a, b) {
						var c = this.doc;
						return a = V(c, null == a ? c.first + c.size - 1 : a), fc(this, a + 1, b)
					},
					cursorCoords: function(a, b) {
						var d, c = this.doc.sel.primary();
						return d = null == a ? c.head : "object" == typeof a ? W(this.doc, a) : a ? c.from() : c.to(), pd(this, d, b || "page")
					},
					charCoords: function(a, b) {
						return od(this, W(this.doc, a), b || "page")
					},
					coordsChar: function(a, b) {
						return a = nd(this, a, b || "page"), sd(this, a.left, a.top)
					},
					lineAtHeight: function(a, b) {
						return a = nd(this, {
							top: a,
							left: 0
						}, b || "page").top, M(this.doc, a + this.display.viewOffset)
					},
					heightAtLine: function(a, b, c) {
						var e, f, d = !1;
						return "number" == typeof a ? (f = this.doc.first + this.doc.size - 1, a < this.doc.first ? a = this.doc.first : a > f && (a = f, d = !0), e = H(this.doc, a)) : e = a, md(this, e, {
							top: 0,
							left: 0
						}, b || "page", c || d).top + (d ? this.doc.height - yb(e) : 0)
					},
					defaultTextHeight: function() {
						return wd(this.display)
					},
					defaultCharWidth: function() {
						return xd(this.display)
					},
					getViewport: function() {
						return {
							from: this.display.viewFrom,
							to: this.display.viewTo
						}
					},
					addWidget: function(a, b, c, e, f) {
						var h, i, j, k, g = this.display;
						a = pd(this, W(this.doc, a)), h = a.bottom, i = a.left, b.style.position = "absolute", b.setAttribute("cm-ignore-events", "true"), this.display.input.setUneditable(b), g.sizer.appendChild(b), "over" == e ? h = a.top : ("above" == e || "near" == e) && (j = d(g.wrapper.clientHeight, this.doc.height), k = d(g.sizer.clientWidth, g.lineSpace.clientWidth), ("above" == e || a.bottom + b.offsetHeight > j) && a.top > b.offsetHeight ? h = a.top - b.offsetHeight : a.bottom + b.offsetHeight <= j && (h = a.bottom), i + b.offsetWidth > k && (i = k - b.offsetWidth)), b.style.top = h + "px", b.style.left = b.style.right = "", "right" == f ? (i = g.sizer.clientWidth - b.offsetWidth, b.style.right = "0px") : ("left" == f ? i = 0 : "middle" == f && (i = (g.sizer.clientWidth - b.offsetWidth) / 2), b.style.left = i + "px"), c && Ud(this, {
							left: i,
							top: h,
							right: i + b.offsetWidth,
							bottom: h + b.offsetHeight
						})
					},
					triggerOnKeyDown: re(ug),
					triggerOnKeyPress: re(xg),
					triggerOnKeyUp: wg,
					execCommand: function(a) {
						return Ei.hasOwnProperty(a) ? Ei[a].call(null, this) : void 0
					},
					triggerElectric: re(function(a) {
						Qg(this, a)
					}),
					findPosH: function(a, b, c, d) {
						var g, h, e = this,
							f = 1;
						for(0 > b && (f = -1, b = -b), g = W(this.doc, a), h = 0; b > h && (g = Ug(e.doc, g, f, c, d), !g.hitSide); ++h);
						return g
					},
					moveH: re(function(a, b) {
						var c = this;
						this.extendSelectionsBy(function(d) {
							return c.display.shift || c.doc.extend || d.empty() ? Ug(c.doc, d.head, a, b, c.options.rtlMoveVisually) : 0 > a ? d.from() : d.to()
						}, Gh)
					}),
					deleteH: re(function(a, b) {
						var c = this.doc.sel,
							d = this.doc;
						c.somethingSelected() ? d.replaceSelection("", null, "+delete") : lg(this, function(c) {
							var e = Ug(d, c.head, a, b, !1);
							return 0 > a ? {
								from: e,
								to: c.head
							} : {
								from: c.head,
								to: e
							}
						})
					}),
					findPosV: function(a, b, c, d) {
						var j, h, i, e = this,
							f = 1,
							g = d;
						for(0 > b && (f = -1, b = -b), h = W(this.doc, a), i = 0; b > i && (j = pd(e, h, "div"), null == g ? g = j.left : j.left = g, h = Vg(e, j, f, c), !h.hitSide); ++i);
						return h
					},
					moveV: re(function(a, b) {
						var g, c = this,
							d = this.doc,
							e = [],
							f = !this.display.shift && !d.extend && d.sel.somethingSelected();
						if(d.extendSelectionsBy(function(g) {
								var h, i;
								return f ? 0 > a ? g.from() : g.to() : (h = pd(c, g.head, "div"), null != g.goalColumn && (h.left = g.goalColumn), e.push(h.left), i = Vg(c, h, a, b), "page" == b && g == d.sel.primary() && Wd(c, od(c, i, "div").top - h.top), i)
							}, Gh), e.length)
							for(g = 0; g < d.sel.ranges.length; g++) d.sel.ranges[g].goalColumn = e[g]
					}),
					findWordAt: function(a) {
						var f, g, h, b = this.doc,
							c = H(b, a.line).text,
							d = a.ch,
							e = a.ch;
						if(c) {
							for(f = this.getHelper(a, "wordChars"), "before" != a.sticky && e != c.length || !d ? ++e : --d, g = c.charAt(d), h = B(g, f) ? function(a) {
									return B(a, f)
								} : /\s/.test(g) ? function(a) {
									return /\s/.test(a)
								} : function(a) {
									return !/\s/.test(a) && !B(a)
								}; d > 0 && h(c.charAt(d - 1));) --d;
							for(; e < c.length && h(c.charAt(e));) ++e
						}
						return new oi(P(a.line, d), P(a.line, e))
					},
					toggleOverwrite: function(a) {
						null != a && a == this.state.overwrite || ((this.state.overwrite = !this.state.overwrite) ? n(this.display.cursorDiv, "CodeMirror-overwrite") : yh(this.display.cursorDiv, "CodeMirror-overwrite"), Kb(this, "overwriteToggle", this, this.state.overwrite))
					},
					hasFocus: function() {
						return this.display.input.getField() == m()
					},
					isReadOnly: function() {
						return !(!this.options.readOnly && !this.doc.cantEdit)
					},
					scrollTo: re(function(a, b) {
						Yd(this, a, b)
					}),
					getScrollInfo: function() {
						var a = this.display.scroller;
						return {
							left: a.scrollLeft,
							top: a.scrollTop,
							height: a.scrollHeight - Vc(this) - this.display.barHeight,
							width: a.scrollWidth - Vc(this) - this.display.barWidth,
							clientHeight: Xc(this),
							clientWidth: Wc(this)
						}
					},
					scrollIntoView: re(function(a, b) {
						null == a ? (a = {
							from: this.doc.sel.primary().head,
							to: null
						}, null == b && (b = this.options.cursorScrollMargin)) : "number" == typeof a ? a = {
							from: P(a, 0),
							to: null
						} : null == a.from && (a = {
							from: a,
							to: null
						}), a.to || (a.to = a.from), a.margin = b || 0, null == a.from.line ? _d(this, a.from, a.to, a.margin) : Zd(this, a)
					}),
					setSize: re(function(a, b) {
						var e, c = this,
							d = function(a) {
								return "number" == typeof a || /^\d+$/.test(a + "") ? a + "px" : a
							};
						null != a && (this.display.wrapper.style.width = d(a)), null != b && (this.display.wrapper.style.height = d(b)), this.options.lineWrapping && id(this), e = this.display.viewFrom, this.doc.iter(e, this.display.viewTo, function(a) {
							if(a.widgets)
								for(var b = 0; b < a.widgets.length; b++)
									if(a.widgets[b].noHScroll) {
										ue(c, e, "widget");
										break
									}++e
						}), this.curOp.forceUpdate = !0, Kb(this, "refresh", this)
					}),
					operation: function(a) {
						return pe(this, a)
					},
					refresh: re(function() {
						var a = this.display.cachedTextHeight;
						te(this), this.curOp.forceUpdate = !0, jd(this), Yd(this, this.doc.scrollLeft, this.doc.scrollTop), Ie(this), (null == a || .5 < f(a - wd(this.display))) && Bd(this), Kb(this, "refresh", this)
					}),
					swapDoc: re(function(a) {
						var b = this.doc;
						return b.cm = null, _e(this, a), jd(this), this.display.input.reset(), Yd(this, a.scrollLeft, a.scrollTop), this.curOp.forceScroll = !0, Cc(this, "swapDoc", this, b), b
					}),
					getInputField: function() {
						return this.display.input.getField()
					},
					getWrapperElement: function() {
						return this.display.wrapper
					},
					getScrollerElement: function() {
						return this.display.scroller
					},
					getGutterElement: function() {
						return this.display.gutters
					}
				}, Ob(a), a.registerHelper = function(b, d, e) {
					c.hasOwnProperty(b) || (c[b] = a[b] = {
						_global: []
					}), c[b][d] = e
				}, a.registerGlobalHelper = function(b, d, e, f) {
					a.registerHelper(b, d, f), c[b]._global.push({
						pred: e,
						val: f
					})
				}
			}(Kg), Qi = "iter insert remove copy getEditor constructor".split(" ");
		for(Ri in wi.prototype) wi.prototype.hasOwnProperty(Ri) && 0 > s(Qi, Ri) && (Kg.prototype[Ri] = function(a) {
			return function() {
				return a.apply(this.doc, arguments)
			}
		}(wi.prototype[Ri]));
		return Ob(wi), Kg.inputStyles = {
				textarea: Pi,
				contenteditable: Oi
			}, Kg.defineMode = function(a) {
				Kg.defaults.mode || "null" == a || (Kg.defaults.mode = a), Yb.apply(this, arguments)
			}, Kg.defineMIME = function(a, b) {
				Wh[a] = b
			}, Kg.defineMode("null", function() {
				return {
					token: function(a) {
						return a.skipToEnd()
					}
				}
			}), Kg.defineMIME("text/plain", "null"), Kg.defineExtension = function(a, b) {
				Kg.prototype[a] = b
			}, Kg.defineDocExtension = function(a, b) {
				wi.prototype[a] = b
			}, Kg.fromTextArea = function(a, b) {
				function c() {
					a.value = h.getValue()
				}
				var d, e, f, g, h;
				if(b = b ? q(b) : {}, b.value = a.value, !b.tabindex && a.tabIndex && (b.tabindex = a.tabIndex), !b.placeholder && a.placeholder && (b.placeholder = a.placeholder), null == b.autofocus && (d = m(), b.autofocus = d == a || null != a.getAttribute("autofocus") && d == document.body), a.form && (Ph(a.form, "submit", c), !b.leaveSubmitMethodAlone)) {
					f = a.form, e = f.submit;
					try {
						g = f.submit = function() {
							c(), f.submit = e, f.submit(), f.submit = g
						}
					} catch(b) {}
				}
				return b.finishInit = function(b) {
					b.save = c, b.getTextArea = function() {
						return a
					}, b.toTextArea = function() {
						b.toTextArea = isNaN, c(), a.parentNode.removeChild(b.getWrapperElement()), a.style.display = "", a.form && (Jb(a.form, "submit", c), "function" == typeof a.form.submit && (a.form.submit = e))
					}
				}, a.style.display = "none", h = Kg(function(b) {
					return a.parentNode.insertBefore(b, a.nextSibling)
				}, b)
			},
			function(a) {
				a.off = Jb, a.on = Ph, a.wheelEventPixels = Ne, a.Doc = wi, a.splitLines = Rh, a.countColumn = r, a.findColumn = t, a.isWordChar = A, a.Pass = Dh, a.signal = Kb, a.Line = _h, a.changeEnd = Re, a.scrollbarModel = ii, a.Pos = P, a.cmpPos = Q, a.modes = Vh, a.mimeModes = Wh, a.resolveMode = Zb, a.getMode = $b, a.modeExtensions = Xh, a.extendMode = _b, a.copyState = ac, a.startState = cc, a.innerMode = bc, a.commands = Ei, a.keyMap = Di, a.keyName = jg, a.isModifierKey = ig, a.lookupKey = hg, a.normalizeKeyMap = gg, a.StringStream = Yh, a.SharedTextMarker = ui, a.TextMarker = ti, a.LineWidget = ri, a.e_preventDefault = Pb, a.e_stopPropagation = Qb, a.e_stop = Sb, a.addClass = n, a.contains = l, a.rmClass = yh, a.keyNames = zi
			}(Kg), Kg.version = "5.26.0", Kg
	})
}, function(a) {
	var b = {}.toString;
	a.exports = function(a) {
		return b.call(a).slice(8, -1)
	}
}, function(a) {
	a.exports = function(a) {
		if(void 0 == a) throw TypeError("Can't call method on  " + a);
		return a
	}
}, function(a, b, c) {
	var d = c(3);
	a.exports = function(a, b) {
		return !!a && d(function() {
			b ? a.call(null, function() {}, 1) : a.call(null)
		})
	}
}, function(a, b, c) {
	var d = c(26),
		e = c(47),
		f = c(9),
		g = c(8),
		h = c(134);
	a.exports = function(a, b) {
		var c = 1 == a,
			i = 4 == a,
			j = 6 == a,
			k = b || h;
		return function(b, h, l) {
			for(var s, t, m = f(b), n = e(m), o = d(h, l, 3), p = g(n.length), q = 0, r = c ? k(b, p) : 2 == a ? k(b, 0) : void 0; p > q; q++)
				if((5 == a || j || q in n) && (s = n[q], t = o(s, q, m), a))
					if(c) r[q] = t;
					else if(t) switch(a) {
				case 3:
					return !0;
				case 5:
					return s;
				case 6:
					return q;
				case 2:
					r.push(s)
			} else if(i) return !1;
			return j ? -1 : 3 == a || i ? i : r
		}
	}
}, function(a, b, c) {
	var d = c(0),
		e = c(25),
		f = c(3);
	a.exports = function(a, b) {
		var c = (e.Object || {})[a] || Object[a],
			g = {};
		g[a] = b(c), d(d.S + d.F * f(function() {
			c(1)
		}), "Object", g)
	}
}, function(a, b, c) {
	var d = c(4);
	a.exports = function(a, b) {
		if(!d(a)) return a;
		var c, e;
		if(b && "function" == typeof(c = a.toString) && !d(e = c.call(a))) return e;
		if("function" == typeof(c = a.valueOf) && !d(e = c.call(a))) return e;
		if(!b && "function" == typeof(c = a.toString) && !d(e = c.call(a))) return e;
		throw TypeError("Can't convert object to primitive value")
	}
}, function(a) {
	var b = a.exports = {
		version: "2.4.0"
	};
	"number" == typeof __e && (__e = b)
}, function(a, b, c) {
	var d = c(11);
	a.exports = function(a, b, c) {
		return d(a), void 0 === b ? a : 1 === c ? function(c) {
			return a.call(b, c)
		} : 2 === c ? function(c, d) {
			return a.call(b, c, d)
		} : 3 === c ? function(c, d, e) {
			return a.call(b, c, d, e)
		} : function() {
			return a.apply(b, arguments)
		}
	}
}, function(a, b, c) {
	var d = c(114),
		e = c(0),
		f = c(58)("metadata"),
		g = f.store || (f.store = new(c(117))),
		h = function(a, b, c) {
			var f, e = g.get(a);
			if(!e) {
				if(!c) return;
				g.set(a, e = new d)
			}
			if(f = e.get(b), !f) {
				if(!c) return;
				e.set(b, f = new d)
			}
			return f
		};
	a.exports = {
		store: g,
		map: h,
		has: function(a, b, c) {
			var d = h(b, c, !1);
			return void 0 !== d && d.has(a)
		},
		get: function(a, b, c) {
			var d = h(b, c, !1);
			return void 0 === d ? void 0 : d.get(a)
		},
		set: function(a, b, c, d) {
			h(c, d, !0).set(a, b)
		},
		keys: function(a, b) {
			var c = h(a, b, !1),
				d = [];
			return c && c.forEach(function(a, b) {
				d.push(b)
			}), d
		},
		key: function(a) {
			return void 0 === a || "symbol" == typeof a ? a : a + ""
		},
		exp: function(a) {
			e(e.S, "Reflect", a)
		}
	}
}, function(a, b, c) {
	"use strict";
	var d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y, Z, $, _, ab, bb, cb, db, eb, fb, gb, hb, ib, jb, kb, lb, mb, nb, ob, pb, qb, rb, sb, tb, ub, vb, wb, xb, yb, zb, Ab, Bb, Cb, Db, Eb, Fb, Gb, Hb, Ib, Jb, Kb, Lb, Mb, Nb, Ob, Pb, Qb, Rb, Sb, Tb, Ub, Vb;
	c(6) ? (d = c(33), e = c(2), f = c(3), g = c(0), h = c(59), i = c(84), j = c(26), k = c(32), l = c(30), m = c(12), n = c(37), o = c(31), p = c(8), q = c(39), r = c(24), s = c(10), t = c(111), u = c(46), v = c(4), w = c(9), x = c(69), y = c(34), z = c(17), A = c(35).f, B = c(86), C = c(40), D = c(5), E = c(22), F = c(49), G = c(78), H = c(87), I = c(43), J = c(55), K = c(38), L = c(62), M = c(91), N = c(7), O = c(16), P = N.f, Q = O.f, R = e.RangeError, S = e.TypeError, T = e.Uint8Array, U = "ArrayBuffer", V = "Shared" + U, W = "BYTES_PER_ELEMENT", X = "prototype", Y = Array[X], Z = i.ArrayBuffer, $ = i.DataView, _ = E(0), ab = E(2), bb = E(3), cb = E(4), db = E(5), eb = E(6), fb = F(!0), gb = F(!1), hb = H.values, ib = H.keys, jb = H.entries, kb = Y.lastIndexOf, lb = Y.reduce, mb = Y.reduceRight, nb = Y.join, ob = Y.sort, pb = Y.slice, qb = Y.toString, rb = Y.toLocaleString, sb = D("iterator"), tb = D("toStringTag"), ub = C("typed_constructor"), vb = C("def_constructor"), wb = h.CONSTR, xb = h.TYPED, yb = h.VIEW, zb = "Wrong length!", Ab = E(1, function(a, b) {
		return Gb(G(a, a[vb]), b)
	}), Bb = f(function() {
		return 1 === new T(new Uint16Array([1]).buffer)[0]
	}), Cb = !!T && !!T[X].set && f(function() {
		new T(1).set({})
	}), Db = function(a, b) {
		if(void 0 === a) throw S(zb);
		var c = p(a);
		if(b && !t(+a, c)) throw R(zb);
		return c
	}, Eb = function(a, b) {
		var c = o(a);
		if(0 > c || c % b) throw R("Wrong offset!");
		return c
	}, Fb = function(a) {
		if(v(a) && xb in a) return a;
		throw S(a + " is not a typed array!")
	}, Gb = function(a, b) {
		if(!(v(a) && ub in a)) throw S("It is not a typed array constructor!");
		return new a(b)
	}, Hb = function(a, b) {
		return Ib(G(a, a[vb]), b)
	}, Ib = function(a, b) {
		for(var c = 0, d = b.length, e = Gb(a, d); d > c;) e[c] = b[c++];
		return e
	}, Jb = function(a, b, c) {
		P(a, b, {
			get: function() {
				return this._d[c]
			}
		})
	}, Kb = function(a) {
		var g, h, i, k, l, m, b = w(a),
			c = arguments.length,
			d = c > 1 ? arguments[1] : void 0,
			e = void 0 !== d,
			f = B(b);
		if(void 0 != f && !x(f)) {
			for(m = f.call(b), i = [], g = 0; !(l = m.next()).done; g++) i.push(l.value);
			b = i
		}
		for(e && c > 2 && (d = j(d, arguments[2], 2)), g = 0, h = p(b.length), k = Gb(this, h); h > g; g++) k[g] = e ? d(b[g], g) : b[g];
		return k
	}, Lb = function() {
		for(var a = 0, b = arguments.length, c = Gb(this, b); b > a;) c[a] = arguments[a++];
		return c
	}, Mb = !!T && f(function() {
		rb.call(new T(1))
	}), Nb = function() {
		return rb.apply(Mb ? pb.call(Fb(this)) : Fb(this), arguments)
	}, Ob = {
		copyWithin: function(a, b) {
			return M.call(Fb(this), a, b, 2 < arguments.length ? arguments[2] : void 0)
		},
		every: function(a) {
			return cb(Fb(this), a, 1 < arguments.length ? arguments[1] : void 0)
		},
		fill: function() {
			return L.apply(Fb(this), arguments)
		},
		filter: function(a) {
			return Hb(this, ab(Fb(this), a, 1 < arguments.length ? arguments[1] : void 0))
		},
		find: function(a) {
			return db(Fb(this), a, 1 < arguments.length ? arguments[1] : void 0)
		},
		findIndex: function(a) {
			return eb(Fb(this), a, 1 < arguments.length ? arguments[1] : void 0)
		},
		forEach: function(a) {
			_(Fb(this), a, 1 < arguments.length ? arguments[1] : void 0)
		},
		indexOf: function(a) {
			return gb(Fb(this), a, 1 < arguments.length ? arguments[1] : void 0)
		},
		includes: function(a) {
			return fb(Fb(this), a, 1 < arguments.length ? arguments[1] : void 0)
		},
		join: function() {
			return nb.apply(Fb(this), arguments)
		},
		lastIndexOf: function() {
			return kb.apply(Fb(this), arguments)
		},
		map: function(a) {
			return Ab(Fb(this), a, 1 < arguments.length ? arguments[1] : void 0)
		},
		reduce: function() {
			return lb.apply(Fb(this), arguments)
		},
		reduceRight: function() {
			return mb.apply(Fb(this), arguments)
		},
		reverse: function() {
			for(var e, a = this, b = Fb(a).length, c = Math.floor(b / 2), d = 0; c > d;) e = a[d], a[d++] = a[--b], a[b] = e;
			return a
		},
		some: function(a) {
			return bb(Fb(this), a, 1 < arguments.length ? arguments[1] : void 0)
		},
		sort: function(a) {
			return ob.call(Fb(this), a)
		},
		subarray: function(a, b) {
			var c = Fb(this),
				d = c.length,
				e = q(a, d);
			return new(G(c, c[vb]))(c.buffer, c.byteOffset + e * c.BYTES_PER_ELEMENT, p((void 0 === b ? d : q(b, d)) - e))
		}
	}, Pb = function(a, b) {
		return Hb(this, pb.call(Fb(this), a, b))
	}, Qb = function(a) {
		Fb(this);
		var b = Eb(arguments[1], 1),
			c = this.length,
			d = w(a),
			e = p(d.length),
			f = 0;
		if(e + b > c) throw R(zb);
		for(; e > f;) this[b + f] = d[f++]
	}, Rb = {
		entries: function() {
			return jb.call(Fb(this))
		},
		keys: function() {
			return ib.call(Fb(this))
		},
		values: function() {
			return hb.call(Fb(this))
		}
	}, Sb = function(a, b) {
		return v(a) && a[xb] && "symbol" != typeof b && b in a && +b + "" == b + ""
	}, Tb = function(a, b) {
		return Sb(a, b = r(b, !0)) ? l(2, a[b]) : Q(a, b)
	}, Ub = function(a, b, c) {
		return !(Sb(a, b = r(b, !0)) && v(c) && s(c, "value")) || s(c, "get") || s(c, "set") || c.configurable || s(c, "writable") && !c.writable || s(c, "enumerable") && !c.enumerable ? P(a, b, c) : (a[b] = c.value, a)
	}, wb || (O.f = Tb, N.f = Ub), g(g.S + g.F * !wb, "Object", {
		getOwnPropertyDescriptor: Tb,
		defineProperty: Ub
	}), f(function() {
		qb.call({})
	}) && (qb = rb = function() {
		return nb.call(this)
	}), Vb = n({}, Ob), n(Vb, Rb), m(Vb, sb, Rb.values), n(Vb, {
		slice: Pb,
		set: Qb,
		constructor: function() {},
		toString: qb,
		toLocaleString: Nb
	}), Jb(Vb, "buffer", "b"), Jb(Vb, "byteOffset", "o"), Jb(Vb, "byteLength", "l"), Jb(Vb, "length", "e"), P(Vb, tb, {
		get: function() {
			return this[xb]
		}
	}), a.exports = function(a, b, c, i) {
		var j, l, n, o, q, r, s, t, w, x, B, C, D;
		i = !!i, j = a + (i ? "Clamped" : "") + "Array", l = e[j], n = l || {}, o = l && z(l), q = !l || !h.ABV, r = {}, s = l && l[X], t = function(c, d) {
			var e = c._d;
			return e.v["get" + a](d * b + e.o, Bb)
		}, w = function(c, d, e) {
			var f = c._d;
			i && (e = 0 > (e = Math.round(e)) ? 0 : e > 255 ? 255 : 255 & e), f.v["set" + a](d * b + f.o, e, Bb)
		}, x = function(a, b) {
			P(a, b, {
				get: function() {
					return t(this, b)
				},
				set: function(a) {
					return w(this, b, a)
				},
				enumerable: !0
			})
		}, q ? (l = c(function(a, c, d, e) {
			var h, i, n, o, f, g, q;
			if(k(a, l, j, "_d"), f = 0, g = 0, v(c)) {
				if(!(c instanceof Z || (o = u(c)) == U || o == V)) return xb in c ? Ib(l, c) : Kb.call(l, c);
				if(h = c, g = Eb(d, b), q = c.byteLength, void 0 === e) {
					if(q % b) throw R(zb);
					if(i = q - g, 0 > i) throw R(zb)
				} else if(i = p(e) * b, i + g > q) throw R(zb);
				n = i / b
			} else n = Db(c, !0), i = n * b, h = new Z(i);
			for(m(a, "_d", {
					b: h,
					o: g,
					l: i,
					e: n,
					v: new $(h)
				}); n > f;) x(a, f++)
		}), s = l[X] = y(Vb), m(s, "constructor", l)) : !J(function(a) {
			new l(null), new l(a)
		}, !0) && (l = c(function(a, c, d, e) {
			k(a, l, j);
			var f;
			return v(c) ? c instanceof Z || (f = u(c)) == U || f == V ? void 0 === e ? void 0 === d ? new n(c) : new n(c, Eb(d, b)) : new n(c, Eb(d, b), e) : xb in c ? Ib(l, c) : Kb.call(l, c) : new n(Db(c, "Uint8Array" != j))
		}), _(o === Function.prototype ? A(n) : A(n).concat(A(o)), function(a) {
			a in l || m(l, a, n[a])
		}), l[X] = s, !d && (s.constructor = l)), B = s[sb], C = !!B && ("values" == B.name || void 0 == B.name), D = Rb.values, m(l, ub, !0), m(s, xb, j), m(s, yb, !0), m(s, vb, l), (i ? new l(1)[tb] != j : !(tb in s)) && P(s, tb, {
			get: function() {
				return j
			}
		}), r[j] = l, g(g.G + g.W + g.F * (l != n), r), g(g.S, j, {
			BYTES_PER_ELEMENT: b,
			from: Kb,
			of: Lb
		}), W in s || m(s, W, b), g(g.P, j, Ob), K(j), g(g.P + g.F * Cb, j, {
			set: Qb
		}), g(g.P + g.F * !C, j, Rb), g(g.P + g.F * (s.toString != qb), j, {
			toString: qb
		}), g(g.P + g.F * f(function() {
			new l(1).slice()
		}), j, {
			slice: Pb
		}), g(g.P + g.F * (f(function() {
			return [1, 2].toLocaleString() != new l([1, 2]).toLocaleString()
		}) || !f(function() {
			s.toLocaleString.call([1, 2])
		})), j, {
			toLocaleString: Nb
		}), I[j] = C ? B : D, d || C || m(s, sb, D)
	}) : a.exports = function() {}
}, function(a, b, c) {
	var d = c(40)("meta"),
		e = c(4),
		f = c(10),
		g = c(7).f,
		h = 0,
		i = Object.isExtensible || function() {
			return !0
		},
		j = !c(3)(function() {
			return i(Object.preventExtensions({}))
		}),
		k = function(a) {
			g(a, d, {
				value: {
					i: "O" + ++h,
					w: {}
				}
			})
		},
		l = a.exports = {
			KEY: d,
			NEED: !1,
			fastKey: function(a, b) {
				if(!e(a)) return "symbol" == typeof a ? a : ("string" == typeof a ? "S" : "P") + a;
				if(!f(a, d)) {
					if(!i(a)) return "F";
					if(!b) return "E";
					k(a)
				}
				return a[d].i
			},
			getWeak: function(a, b) {
				if(!f(a, d)) {
					if(!i(a)) return !0;
					if(!b) return !1;
					k(a)
				}
				return a[d].w
			},
			onFreeze: function(a) {
				return j && l.NEED && i(a) && !f(a, d) && k(a), a
			}
		}
}, function(a) {
	a.exports = function(a, b) {
		return {
			enumerable: !(1 & a),
			configurable: !(2 & a),
			writable: !(4 & a),
			value: b
		}
	}
}, function(a) {
	var b = Math.ceil,
		c = Math.floor;
	a.exports = function(a) {
		return isNaN(a = +a) ? 0 : (a > 0 ? c : b)(a)
	}
}, function(a) {
	a.exports = function(a, b, c, d) {
		if(!(a instanceof b) || void 0 !== d && d in a) throw TypeError(c + ": incorrect invocation!");
		return a
	}
}, function(a) {
	a.exports = !1
}, function(a, b, c) {
	var d = c(1),
		e = c(104),
		f = c(65),
		g = c(77)("IE_PROTO"),
		h = function() {},
		i = "prototype",
		j = function() {
			var g, a = c(64)("iframe"),
				b = f.length,
				d = "<",
				e = ">";
			for(a.style.display = "none", c(67).appendChild(a), a.src = "javascript:", g = a.contentWindow.document, g.open(), g.write(d + "script" + e + "document.F=Object" + d + "/script" + e), g.close(), j = g.F; b--;) delete j[i][f[b]];
			return j()
		};
	a.exports = Object.create || function(a, b) {
		var c;
		return null === a ? c = j() : (h[i] = d(a), c = new h, h[i] = null, c[g] = a), void 0 === b ? c : e(c, b)
	}
}, function(a, b, c) {
	var d = c(106),
		e = c(65).concat("length", "prototype");
	b.f = Object.getOwnPropertyNames || function(a) {
		return d(a, e)
	}
}, function(a, b, c) {
	var d = c(106),
		e = c(65);
	a.exports = Object.keys || function(a) {
		return d(a, e)
	}
}, function(a, b, c) {
	var d = c(13);
	a.exports = function(a, b, c) {
		for(var e in b) d(a, e, b[e], c);
		return a
	}
}, function(a, b, c) {
	"use strict";
	var d = c(2),
		e = c(7),
		f = c(6),
		g = c(5)("species");
	a.exports = function(a) {
		var b = d[a];
		f && b && !b[g] && e.f(b, g, {
			configurable: !0,
			get: function() {
				return this
			}
		})
	}
}, function(a, b, c) {
	var d = c(31),
		e = Math.max,
		f = Math.min;
	a.exports = function(a, b) {
		return a = d(a), 0 > a ? e(a + b, 0) : f(a, b)
	}
}, function(a) {
	var b = 0,
		c = Math.random();
	a.exports = function(a) {
		return "Symbol(".concat(void 0 === a ? "" : a, ")_", (++b + c).toString(36))
	}
}, function(a, b, c) {
	var d = c(5)("unscopables"),
		e = Array.prototype;
	void 0 == e[d] && c(12)(e, d, {}), a.exports = function(a) {
		e[d][a] = !0
	}
}, function(a, b, c) {
	var d = c(26),
		e = c(100),
		f = c(69),
		g = c(1),
		h = c(8),
		i = c(86),
		j = {},
		k = {},
		b = a.exports = function(a, b, c, l, m) {
			var q, r, s, t, n = m ? function() {
					return a
				} : i(a),
				o = d(c, l, b ? 2 : 1),
				p = 0;
			if("function" != typeof n) throw TypeError(a + " is not iterable!");
			if(f(n)) {
				for(q = h(a.length); q > p; p++)
					if(t = b ? o(g(r = a[p])[0], r[1]) : o(a[p]), t === j || t === k) return t
			} else
				for(s = n.call(a); !(r = s.next()).done;)
					if(t = e(s, o, r.value, b), t === j || t === k) return t
		};
	b.BREAK = j, b.RETURN = k
}, function(a) {
	a.exports = {}
}, function(a, b, c) {
	var d = c(7).f,
		e = c(10),
		f = c(5)("toStringTag");
	a.exports = function(a, b, c) {
		a && !e(a = c ? a : a.prototype, f) && d(a, f, {
			configurable: !0,
			value: b
		})
	}
}, function(a, b, c) {
	var d = c(0),
		e = c(20),
		f = c(3),
		g = c(82),
		h = "[" + g + "]",
		i = "​",
		j = RegExp("^" + h + h + "*"),
		k = RegExp(h + h + "*$"),
		l = function(a, b, c) {
			var e = {},
				h = f(function() {
					return !!g[a]() || i[a]() != i
				}),
				j = e[a] = h ? b(m) : g[a];
			c && (e[c] = j), d(d.P + d.F * h, "String", e)
		},
		m = l.trim = function(a, b) {
			return a = e(a) + "", 1 & b && (a = a.replace(j, "")), 2 & b && (a = a.replace(k, "")), a
		};
	a.exports = l
}, function(a, b, c) {
	var d = c(19),
		e = c(5)("toStringTag"),
		f = "Arguments" == d(function() {
			return arguments
		}()),
		g = function(a, b) {
			try {
				return a[b]
			} catch(b) {}
		};
	a.exports = function(a) {
		var b, c, h;
		return void 0 === a ? "Undefined" : null === a ? "Null" : "string" == typeof(c = g(b = Object(a), e)) ? c : f ? d(b) : "Object" == (h = d(b)) && "function" == typeof b.callee ? "Arguments" : h
	}
}, function(a, b, c) {
	var d = c(19);
	a.exports = Object("z").propertyIsEnumerable(0) ? Object : function(a) {
		return "String" == d(a) ? a.split("") : Object(a)
	}
}, function(a, b) {
	b.f = {}.propertyIsEnumerable
}, function(a, b, c) {
	var d = c(15),
		e = c(8),
		f = c(39);
	a.exports = function(a) {
		return function(b, c, g) {
			var k, h = d(b),
				i = e(h.length),
				j = f(g, i);
			if(a && c != c) {
				for(; i > j;)
					if(k = h[j++], k != k) return !0
			} else
				for(; i > j; j++)
					if((a || j in h) && h[j] === c) return a || j || 0;
			return !a && -1
		}
	}
}, function(a, b, c) {
	"use strict";
	var d = c(2),
		e = c(0),
		f = c(13),
		g = c(37),
		h = c(29),
		i = c(42),
		j = c(32),
		k = c(4),
		l = c(3),
		m = c(55),
		n = c(44),
		o = c(68);
	a.exports = function(a, b, c, p, q, r) {
		var y, z, A, B, C, s = d[a],
			t = s,
			u = q ? "set" : "add",
			v = t && t.prototype,
			w = {},
			x = function(a) {
				var b = v[a];
				f(v, a, "delete" == a ? function(a) {
					return r && !k(a) ? !1 : b.call(this, 0 === a ? 0 : a)
				} : "has" == a ? function(a) {
					return r && !k(a) ? !1 : b.call(this, 0 === a ? 0 : a)
				} : "get" == a ? function(a) {
					return r && !k(a) ? void 0 : b.call(this, 0 === a ? 0 : a)
				} : "add" == a ? function(a) {
					return b.call(this, 0 === a ? 0 : a), this
				} : function(a, c) {
					return b.call(this, 0 === a ? 0 : a, c), this
				})
			};
		return "function" == typeof t && (r || v.forEach && !l(function() {
			(new t).entries().next()
		})) ? (y = new t, z = y[u](r ? {} : -0, 1) != y, A = l(function() {
			y.has(1)
		}), B = m(function(a) {
			new t(a)
		}), C = !r && l(function() {
			for(var a = new t, b = 5; b--;) a[u](b, b);
			return !a.has(-0)
		}), B || (t = b(function(b, c) {
			j(b, t, a);
			var d = o(new s, b, t);
			return void 0 != c && i(c, q, d[u], d), d
		}), t.prototype = v, v.constructor = t), (A || C) && (x("delete"), x("has"), q && x("get")), (C || z) && x(u), r && v.clear && delete v.clear) : (t = p.getConstructor(b, a, q, u), g(t.prototype, c), h.NEED = !0), n(t, a), w[a] = t, e(e.G + e.W + e.F * (t != s), w), r || p.setStrong(t, a, q), t
	}
}, function(a, b, c) {
	"use strict";
	var d = c(12),
		e = c(13),
		f = c(3),
		g = c(20),
		h = c(5);
	a.exports = function(a, b, c) {
		var i = h(a),
			j = c(g, i, "" [a]),
			k = j[0],
			l = j[1];
		f(function() {
			var b = {};
			return b[i] = function() {
				return 7
			}, 7 != "" [a](b)
		}) && (e(String.prototype, a, k), d(RegExp.prototype, i, 2 == b ? function(a, b) {
			return l.call(a, this, b)
		} : function(a) {
			return l.call(a, this)
		}))
	}
}, function(a, b, c) {
	"use strict";
	var d = c(1);
	a.exports = function() {
		var a = d(this),
			b = "";
		return a.global && (b += "g"), a.ignoreCase && (b += "i"), a.multiline && (b += "m"), a.unicode && (b += "u"), a.sticky && (b += "y"), b
	}
}, function(a) {
	a.exports = function(a, b, c) {
		var d = void 0 === c;
		switch(b.length) {
			case 0:
				return d ? a() : a.call(c);
			case 1:
				return d ? a(b[0]) : a.call(c, b[0]);
			case 2:
				return d ? a(b[0], b[1]) : a.call(c, b[0], b[1]);
			case 3:
				return d ? a(b[0], b[1], b[2]) : a.call(c, b[0], b[1], b[2]);
			case 4:
				return d ? a(b[0], b[1], b[2], b[3]) : a.call(c, b[0], b[1], b[2], b[3])
		}
		return a.apply(c, b)
	}
}, function(a, b, c) {
	var d = c(4),
		e = c(19),
		f = c(5)("match");
	a.exports = function(a) {
		var b;
		return d(a) && (void 0 === (b = a[f]) ? "RegExp" == e(a) : !!b)
	}
}, function(a, b, c) {
	var f, d = c(5)("iterator"),
		e = !1;
	try {
		f = [7][d](), f["return"] = function() {
			e = !0
		}, Array.from(f, function() {
			throw 2
		})
	} catch(b) {}
	a.exports = function(a, b) {
		var c, f, g;
		if(!b && !e) return !1;
		c = !1;
		try {
			f = [7], g = f[d](), g.next = function() {
				return {
					done: c = !0
				}
			}, f[d] = function() {
				return g
			}, a(f)
		} catch(b) {}
		return c
	}
}, function(a, b, c) {
	a.exports = c(33) || !c(3)(function() {
		var a = Math.random();
		__defineSetter__.call(null, a, function() {}), delete c(2)[a]
	})
}, function(a, b) {
	b.f = Object.getOwnPropertySymbols
}, function(a, b, c) {
	var d = c(2),
		e = "__core-js_shared__",
		f = d[e] || (d[e] = {});
	a.exports = function(a) {
		return f[a] || (f[a] = {})
	}
}, function(a, b, c) {
	for(var m, d = c(2), e = c(12), f = c(40), g = f("typed_array"), h = f("view"), i = !(!d.ArrayBuffer || !d.DataView), j = i, k = 0, l = "Int8Array,Uint8Array,Uint8ClampedArray,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array".split(","); 9 > k;)(m = d[l[k++]]) ? (e(m.prototype, g, !0), e(m.prototype, h, !0)) : j = !1;
	a.exports = {
		ABV: i,
		CONSTR: j,
		TYPED: g,
		VIEW: h
	}
}, function(a, b, c) {
	! function(a) {
		a(c(18))
	}(function(a) {
		function b(a, b, c) {
			var e, d = a.getWrapperElement();
			return e = d.appendChild(document.createElement("div")), e.className = c ? "CodeMirror-dialog CodeMirror-dialog-bottom" : "CodeMirror-dialog CodeMirror-dialog-top", "string" == typeof b ? e.innerHTML = b : e.appendChild(b), e
		}

		function c(a, b) {
			a.state.currentNotificationClose && a.state.currentNotificationClose(), a.state.currentNotificationClose = b
		}
		a.defineExtension("openDialog", function(d, e, f) {
			function g(a) {
				if("string" == typeof a) k.value = a;
				else {
					if(i) return;
					i = !0, h.parentNode.removeChild(h), j.focus(), f.onClose && f.onClose(h)
				}
			}
			f || (f = {}), c(this, null);
			var l, h = b(this, d, f.bottom),
				i = !1,
				j = this,
				k = h.getElementsByTagName("input")[0];
			return k ? (k.focus(), f.value && (k.value = f.value, !1 !== f.selectValueOnOpen && k.select()), f.onInput && a.on(k, "input", function(a) {
				f.onInput(a, k.value, g)
			}), f.onKeyUp && a.on(k, "keyup", function(a) {
				f.onKeyUp(a, k.value, g)
			}), a.on(k, "keydown", function(b) {
				f && f.onKeyDown && f.onKeyDown(b, k.value, g) || ((27 == b.keyCode || !1 !== f.closeOnEnter && 13 == b.keyCode) && (k.blur(), a.e_stop(b), g()), 13 == b.keyCode && e(k.value, b))
			}), !1 !== f.closeOnBlur && a.on(k, "blur", g)) : (l = h.getElementsByTagName("button")[0]) && (a.on(l, "click", function() {
				g(), j.focus()
			}), !1 !== f.closeOnBlur && a.on(l, "blur", g), l.focus()), g
		}), a.defineExtension("openConfirm", function(d, e, f) {
			function g() {
				j || (j = !0, h.parentNode.removeChild(h), k.focus())
			}
			var h, i, j, k, l, n, m;
			for(c(this, null), h = b(this, d, f && f.bottom), i = h.getElementsByTagName("button"), j = !1, k = this, l = 1, i[0].focus(), m = 0; m < i.length; ++m) n = i[m],
				function(b) {
					a.on(n, "click", function(c) {
						a.e_preventDefault(c), g(), b && b(k)
					})
				}(e[m]), a.on(n, "blur", function() {
					--l, setTimeout(function() {
						0 >= l && g()
					}, 200)
				}), a.on(n, "focus", function() {
					++l
				})
		}), a.defineExtension("openNotification", function(d, e) {
			function f() {
				h || (h = !0, clearTimeout(j), g.parentNode.removeChild(g))
			}
			c(this, f);
			var j, g = b(this, d, e && e.bottom),
				h = !1,
				i = e && "undefined" != typeof e.duration ? e.duration : 5e3;
			return a.on(g, "click", function(b) {
				a.e_preventDefault(b), f()
			}), i && (j = setTimeout(f, i)), f
		})
	})
}, function(a, b, c) {
	! function(a) {
		a(c(18))
	}(function(a) {
		"use strict";

		function b(a, b, e, f) {
			var g, h, i, j;
			this.atOccurrence = !1, this.doc = a, null == f && "string" == typeof b && (f = !1), e = e ? a.clipPos(e) : d(0, 0), this.pos = {
				from: e,
				to: e
			}, "string" != typeof b ? (b.global || (b = new RegExp(b.source, b.ignoreCase ? "ig" : "g")), this.matches = function(c, e) {
				var h, i, f, g, j, k;
				if(c) {
					for(b.lastIndex = 0, f = a.getLine(e.line).slice(0, e.ch), g = 0;
						(b.lastIndex = g, j = b.exec(f), j) && (h = j, i = h.index, g = h.index + (h[0].length || 1), g != f.length););
					k = h && h[0].length || 0, k || (0 == i && 0 == f.length ? h = void 0 : i != a.getLine(e.line).length && k++)
				} else b.lastIndex = e.ch, f = a.getLine(e.line), h = b.exec(f), k = h && h[0].length || 0, i = h && h.index, i + k == f.length || k || (k = 1);
				return h && k ? {
					from: d(e.line, i),
					to: d(e.line, i + k),
					match: h
				} : void 0
			}) : (g = b, f && (b = b.toLowerCase()), h = f ? function(a) {
				return a.toLowerCase()
			} : function(a) {
				return a
			}, i = b.split("\n"), 1 == i.length ? this.matches = b.length ? function(e, f) {
				var i, j, k;
				if(e) {
					if(i = a.getLine(f.line).slice(0, f.ch), j = h(i), k = j.lastIndexOf(b), k > -1) return k = c(i, j, k), {
						from: d(f.line, k),
						to: d(f.line, k + g.length)
					}
				} else if(i = a.getLine(f.line).slice(f.ch), j = h(i), k = j.indexOf(b), k > -1) return k = c(i, j, k) + f.ch, {
					from: d(f.line, k),
					to: d(f.line, k + g.length)
				}
			} : function() {} : (j = g.split("\n"), this.matches = function(b, c) {
				var f, g, k, l, m, n, e = i.length - 1;
				if(b) {
					if(c.line - (i.length - 1) < a.firstLine()) return;
					if(h(a.getLine(c.line).slice(0, j[e].length)) != i[i.length - 1]) return;
					for(f = d(c.line, j[e].length), g = c.line - 1, k = e - 1; k >= 1; --k, --g)
						if(i[k] != h(a.getLine(g))) return;
					return l = a.getLine(g), m = l.length - j[0].length, h(l.slice(m)) == i[0] ? {
						from: d(g, m),
						to: f
					} : void 0
				}
				if(!(c.line + (i.length - 1) > a.lastLine()) && (l = a.getLine(c.line), m = l.length - j[0].length, h(l.slice(m)) == i[0])) {
					for(n = d(c.line, m), g = c.line + 1, k = 1; e > k; ++k, ++g)
						if(i[k] != h(a.getLine(g))) return;
					return h(a.getLine(g).slice(0, j[e].length)) == i[e] ? {
						from: n,
						to: d(g, j[e].length)
					} : void 0
				}
			}))
		}

		function c(a, b, c) {
			if(a.length == b.length) return c;
			for(var e, d = Math.min(c, a.length);;)
				if(e = a.slice(0, d).toLowerCase().length, c > e) ++d;
				else {
					if(!(e > c)) return d;
					--d
				}
		}
		var d = a.Pos;
		b.prototype = {
			findNext: function() {
				return this.find(!1)
			},
			findPrevious: function() {
				return this.find(!0)
			},
			find: function(a) {
				function b(a) {
					var b = d(a, 0);
					return c.pos = {
						from: b,
						to: b
					}, c.atOccurrence = !1, !1
				}
				var c, e, f;
				for(c = this, e = this.doc.clipPos(a ? this.pos.from : this.pos.to);;) {
					if(this.pos = this.matches(a, e)) return this.atOccurrence = !0, this.pos.match || !0;
					if(a) {
						if(!e.line) return b(0);
						e = d(e.line - 1, this.doc.getLine(e.line - 1).length)
					} else {
						if(f = this.doc.lineCount(), e.line == f - 1) return b(f);
						e = d(e.line + 1, 0)
					}
				}
			},
			from: function() {
				return this.atOccurrence ? this.pos.from : void 0
			},
			to: function() {
				return this.atOccurrence ? this.pos.to : void 0
			},
			replace: function(b, c) {
				if(this.atOccurrence) {
					var e = a.splitLines(b);
					this.doc.replaceRange(e, this.pos.from, this.pos.to, c), this.pos.to = d(this.pos.from.line + e.length - 1, e[e.length - 1].length + (1 == e.length ? this.pos.from.ch : 0))
				}
			}
		}, a.defineExtension("getSearchCursor", function(a, c, d) {
			return new b(this.doc, a, c, d)
		}), a.defineDocExtension("getSearchCursor", function(a, c, d) {
			return new b(this, a, c, d)
		}), a.defineExtension("selectMatches", function(b, c) {
			for(var d = [], e = this.getSearchCursor(b, this.getCursor("from"), c); e.findNext() && !(0 < a.cmpPos(e.to(), this.getCursor("to")));) d.push({
				anchor: e.from(),
				head: e.to()
			});
			d.length && this.setSelections(d, 0)
		})
	})
}, function(a, b, c) {
	"use strict";
	var d = c(9),
		e = c(39),
		f = c(8);
	a.exports = function(a) {
		for(var b = d(this), c = f(b.length), g = arguments.length, h = e(g > 1 ? arguments[1] : void 0, c), i = g > 2 ? arguments[2] : void 0, j = void 0 === i ? c : e(i, c); j > h;) b[h++] = a;
		return b
	}
}, function(a, b, c) {
	"use strict";
	var d = c(7),
		e = c(30);
	a.exports = function(a, b, c) {
		b in a ? d.f(a, b, e(0, c)) : a[b] = c
	}
}, function(a, b, c) {
	var d = c(4),
		e = c(2).document,
		f = d(e) && d(e.createElement);
	a.exports = function(a) {
		return f ? e.createElement(a) : {}
	}
}, function(a) {
	a.exports = "constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf".split(",")
}, function(a, b, c) {
	var d = c(5)("match");
	a.exports = function(a) {
		var b = /./;
		try {
			"/./" [a](b)
		} catch(c) {
			try {
				return b[d] = !1, !"/./" [a](b)
			} catch(a) {}
		}
		return !0
	}
}, function(a, b, c) {
	a.exports = c(2).document && document.documentElement
}, function(a, b, c) {
	var d = c(4),
		e = c(76).set;
	a.exports = function(a, b, c) {
		var g, f = b.constructor;
		return f !== c && "function" == typeof f && (g = f.prototype) !== c.prototype && d(g) && e && e(a, g), a
	}
}, function(a, b, c) {
	var d = c(43),
		e = c(5)("iterator"),
		f = Array.prototype;
	a.exports = function(a) {
		return void 0 !== a && (d.Array === a || f[e] === a)
	}
}, function(a, b, c) {
	var d = c(19);
	a.exports = Array.isArray || function(a) {
		return "Array" == d(a)
	}
}, function(a, b, c) {
	"use strict";
	var d = c(34),
		e = c(30),
		f = c(44),
		g = {};
	c(12)(g, c(5)("iterator"), function() {
		return this
	}), a.exports = function(a, b, c) {
		a.prototype = d(g, {
			next: e(1, c)
		}), f(a, b + " Iterator")
	}
}, function(a, b, c) {
	"use strict";
	var d = c(33),
		e = c(0),
		f = c(13),
		g = c(12),
		h = c(10),
		i = c(43),
		j = c(71),
		k = c(44),
		l = c(17),
		m = c(5)("iterator"),
		n = !([].keys && "next" in [].keys()),
		o = "keys",
		p = "values",
		q = function() {
			return this
		};
	a.exports = function(a, b, c, r, s, t, u) {
		j(c, b, r);
		var E, F, G, v = function(a) {
				return !n && a in z ? z[a] : a === o ? function() {
					return new c(this, a)
				} : a === p ? function() {
					return new c(this, a)
				} : function() {
					return new c(this, a)
				}
			},
			w = b + " Iterator",
			x = s == p,
			y = !1,
			z = a.prototype,
			A = z[m] || z["@@iterator"] || s && z[s],
			B = A || v(s),
			C = s ? x ? v("entries") : B : void 0,
			D = "Array" == b ? z.entries || A : A;
		if(D && (G = l(D.call(new a)), G !== Object.prototype && (k(G, w, !0), !d && !h(G, m) && g(G, m, q))), x && A && A.name !== p && (y = !0, B = function() {
				return A.call(this)
			}), (!d || u) && (n || y || !z[m]) && g(z, m, B), i[b] = B, i[w] = q, s)
			if(E = {
					values: x ? B : v(p),
					keys: t ? B : v(o),
					entries: C
				}, u)
				for(F in E) F in z || f(z, F, E[F]);
			else e(e.P + e.F * (n || y), b, E);
		return E
	}
}, function(a) {
	var b = Math.expm1;
	a.exports = !b || 22025.465794806718 < b(10) || 22025.465794806718 > b(10) || -2e-17 != b(-2e-17) ? function(a) {
		return 0 == (a = +a) ? a : a > -1e-6 && 1e-6 > a ? a + a * a / 2 : Math.exp(a) - 1
	} : b
}, function(a) {
	a.exports = Math.sign || function(a) {
		return 0 == (a = +a) || a != a ? a : 0 > a ? -1 : 1
	}
}, function(a, b, c) {
	var d = c(2),
		e = c(83).set,
		f = d.MutationObserver || d.WebKitMutationObserver,
		g = d.process,
		h = d.Promise,
		i = "process" == c(19)(g);
	a.exports = function() {
		var b, c, j, k, l, m, a = function() {
			var a, d;
			for(i && (a = g.domain) && a.exit(); b;) {
				d = b.fn, b = b.next;
				try {
					d()
				} catch(d) {
					throw b ? j() : c = void 0, d
				}
			}
			c = void 0, a && a.enter()
		};
		return i ? j = function() {
				g.nextTick(a)
			} : f ? (k = !0, l = document.createTextNode(""), new f(a).observe(l, {
				characterData: !0
			}), j = function() {
				l.data = k = !k
			}) : h && h.resolve ? (m = h.resolve(), j = function() {
				m.then(a)
			}) : j = function() {
				e.call(d, a)
			},
			function(a) {
				var d = {
					fn: a,
					next: void 0
				};
				c && (c.next = d), b || (b = d, j()), c = d
			}
	}
}, function(a, b, c) {
	var d = c(4),
		e = c(1),
		f = function(a, b) {
			if(e(a), !d(b) && null !== b) throw TypeError(b + ": can't set as prototype!")
		};
	a.exports = {
		set: Object.setPrototypeOf || ("__proto__" in {} ? function(a, b, c) {
			try {
				c = d(26)(Function.call, d(16).f(Object.prototype, "__proto__").set, 2), c(a, []), b = !(a instanceof Array)
			} catch(d) {
				b = !0
			}
			return function(a, d) {
				return f(a, d), b ? a.__proto__ = d : c(a, d), a
			}
		}({}, !1) : void 0),
		check: f
	}
}, function(a, b, c) {
	var d = c(58)("keys"),
		e = c(40);
	a.exports = function(a) {
		return d[a] || (d[a] = e(a))
	}
}, function(a, b, c) {
	var d = c(1),
		e = c(11),
		f = c(5)("species");
	a.exports = function(a, b) {
		var g, c = d(a).constructor;
		return void 0 === c || void 0 == (g = d(c)[f]) ? b : e(g)
	}
}, function(a, b, c) {
	var d = c(31),
		e = c(20);
	a.exports = function(a) {
		return function(b, c) {
			var i, j, f = e(b) + "",
				g = d(c),
				h = f.length;
			return 0 > g || g >= h ? a ? "" : void 0 : (i = f.charCodeAt(g), 55296 > i || i > 56319 || g + 1 === h || 56320 > (j = f.charCodeAt(g + 1)) || j > 57343 ? a ? f.charAt(g) : i : a ? f.slice(g, g + 2) : (i - 55296 << 10) + (j - 56320) + 65536)
		}
	}
}, function(a, b, c) {
	var d = c(54),
		e = c(20);
	a.exports = function(a, b, c) {
		if(d(b)) throw TypeError("String#" + c + " doesn't accept regex!");
		return e(a) + ""
	}
}, function(a, b, c) {
	"use strict";
	var d = c(31),
		e = c(20);
	a.exports = function(a) {
		var b = e(this) + "",
			c = "",
			f = d(a);
		if(0 > f || 1 / 0 == f) throw RangeError("Count can't be negative");
		for(; f > 0;
			(f >>>= 1) && (b += b)) 1 & f && (c += b);
		return c
	}
}, function(a) {
	a.exports = "	\n\f\r   ᠎             　\u2028\u2029﻿"
}, function(a, b, c) {
	var r, s, t, d = c(26),
		e = c(53),
		f = c(67),
		g = c(64),
		h = c(2),
		i = h.process,
		j = h.setImmediate,
		k = h.clearImmediate,
		l = h.MessageChannel,
		m = 0,
		n = {},
		o = "onreadystatechange",
		p = function() {
			var b, a = +this;
			n.hasOwnProperty(a) && (b = n[a], delete n[a], b())
		},
		q = function(a) {
			p.call(a.data)
		};
	j && k || (j = function(a) {
		for(var b = [], c = 1; arguments.length > c;) b.push(arguments[c++]);
		return n[++m] = function() {
			e("function" == typeof a ? a : Function(a), b)
		}, r(m), m
	}, k = function(a) {
		delete n[a]
	}, "process" == c(19)(i) ? r = function(a) {
		i.nextTick(d(p, a, 1))
	} : l ? (s = new l, t = s.port2, s.port1.onmessage = q, r = d(t.postMessage, t, 1)) : h.addEventListener && "function" == typeof postMessage && !h.importScripts ? (r = function(a) {
		h.postMessage(a + "", "*")
	}, h.addEventListener("message", q, !1)) : r = o in g("script") ? function(a) {
		f.appendChild(g("script"))[o] = function() {
			f.removeChild(this), p.call(a)
		}
	} : function(a) {
		setTimeout(d(p, a, 1), 0)
	}), a.exports = {
		set: j,
		clear: k
	}
}, function(a, b, c) {
	"use strict";
	var ab, Z, $, _, bb, cb, d = c(2),
		e = c(6),
		f = c(33),
		g = c(59),
		h = c(12),
		i = c(37),
		j = c(3),
		k = c(32),
		l = c(31),
		m = c(8),
		n = c(35).f,
		o = c(7).f,
		p = c(62),
		q = c(44),
		r = "ArrayBuffer",
		s = "DataView",
		t = "prototype",
		u = "Wrong length!",
		v = "Wrong index!",
		w = d[r],
		x = d[s],
		y = d.Math,
		z = d.RangeError,
		A = d.Infinity,
		B = w,
		C = y.abs,
		D = y.pow,
		E = y.floor,
		F = y.log,
		G = y.LN2,
		H = "buffer",
		I = "byteLength",
		J = "byteOffset",
		K = e ? "_b" : H,
		L = e ? "_l" : I,
		M = e ? "_o" : J,
		N = function(a, b, c) {
			var k, l, m, d = Array(c),
				e = 8 * c - b - 1,
				f = (1 << e) - 1,
				g = f >> 1,
				h = 23 === b ? D(2, -24) - D(2, -77) : 0,
				i = 0,
				j = 0 > a || 0 === a && 0 > 1 / a ? 1 : 0;
			for(a = C(a), a != a || a === A ? (l = a == a ? 0 : 1, k = f) : (k = E(F(a) / G), 1 > a * (m = D(2, -k)) && (k--, m *= 2), a += k + g >= 1 ? h / m : h * D(2, 1 - g), a * m >= 2 && (k++, m /= 2), k + g >= f ? (l = 0, k = f) : k + g >= 1 ? (l = (a * m - 1) * D(2, b), k += g) : (l = a * D(2, g - 1) * D(2, b), k = 0)); b >= 8; d[i++] = 255 & l, l /= 256, b -= 8);
			for(k = k << b | l, e += b; e > 0; d[i++] = 255 & k, k /= 256, e -= 8);
			return d[--i] |= 128 * j, d
		},
		O = function(a, b, c) {
			var k, d = 8 * c - b - 1,
				e = (1 << d) - 1,
				f = e >> 1,
				g = d - 7,
				h = c - 1,
				i = a[h--],
				j = 127 & i;
			for(i >>= 7; g > 0; j = 256 * j + a[h], h--, g -= 8);
			for(k = j & (1 << -g) - 1, j >>= -g, g += b; g > 0; k = 256 * k + a[h], h--, g -= 8);
			if(0 === j) j = 1 - f;
			else {
				if(j === e) return k ? 0 / 0 : i ? -A : A;
				k += D(2, b), j -= f
			}
			return(i ? -1 : 1) * k * D(2, j - b)
		},
		P = function(a) {
			return a[3] << 24 | a[2] << 16 | a[1] << 8 | a[0]
		},
		Q = function(a) {
			return [255 & a]
		},
		R = function(a) {
			return [255 & a, 255 & a >> 8]
		},
		S = function(a) {
			return [255 & a, 255 & a >> 8, 255 & a >> 16, 255 & a >> 24]
		},
		T = function(a) {
			return N(a, 52, 8)
		},
		U = function(a) {
			return N(a, 23, 4)
		},
		V = function(a, b, c) {
			o(a[t], b, {
				get: function() {
					return this[c]
				}
			})
		},
		W = function(a, b, c, d) {
			var g, h, i, e = +c,
				f = l(e);
			if(e != f || 0 > f || f + b > a[L]) throw z(v);
			return g = a[K]._b, h = f + a[M], i = g.slice(h, h + b), d ? i : i.reverse()
		},
		X = function(a, b, c, d, e, f) {
			var i, j, k, m, g = +c,
				h = l(g);
			if(g != h || 0 > h || h + b > a[L]) throw z(v);
			for(i = a[K]._b, j = h + a[M], k = d(+e), m = 0; b > m; m++) i[j + m] = k[f ? m : b - m - 1]
		},
		Y = function(a, b) {
			k(a, w, r);
			var c = +b,
				d = m(c);
			if(c != d) throw z(u);
			return d
		};
	if(g.ABV) {
		if(!j(function() {
				new w
			}) || !j(function() {
				new w(.5)
			})) {
			for(w = function(a) {
					return new B(Y(this, a))
				}, Z = w[t] = B[t], $ = n(B), _ = 0; $.length > _;)(ab = $[_++]) in w || h(w, ab, B[ab]);
			f || (Z.constructor = w)
		}
		bb = new x(new w(2)), cb = x[t].setInt8, bb.setInt8(0, 2147483648), bb.setInt8(1, 2147483649), (bb.getInt8(0) || !bb.getInt8(1)) && i(x[t], {
			setInt8: function(a, b) {
				cb.call(this, a, b << 24 >> 24)
			},
			setUint8: function(a, b) {
				cb.call(this, a, b << 24 >> 24)
			}
		}, !0)
	} else w = function(a) {
		var b = Y(this, a);
		this._b = p.call(Array(b), 0), this[L] = b
	}, x = function(a, b, c) {
		k(this, x, s), k(a, w, s);
		var d = a[L],
			e = l(b);
		if(0 > e || e > d) throw z("Wrong offset!");
		if(c = void 0 === c ? d - e : m(c), e + c > d) throw z(u);
		this[K] = a, this[M] = e, this[L] = c
	}, e && (V(w, I, "_l"), V(x, H, "_b"), V(x, I, "_l"), V(x, J, "_o")), i(x[t], {
		getInt8: function(a) {
			return W(this, 1, a)[0] << 24 >> 24
		},
		getUint8: function(a) {
			return W(this, 1, a)[0]
		},
		getInt16: function(a) {
			var b = W(this, 2, a, arguments[1]);
			return(b[1] << 8 | b[0]) << 16 >> 16
		},
		getUint16: function(a) {
			var b = W(this, 2, a, arguments[1]);
			return b[1] << 8 | b[0]
		},
		getInt32: function(a) {
			return P(W(this, 4, a, arguments[1]))
		},
		getUint32: function(a) {
			return P(W(this, 4, a, arguments[1])) >>> 0
		},
		getFloat32: function(a) {
			return O(W(this, 4, a, arguments[1]), 23, 4)
		},
		getFloat64: function(a) {
			return O(W(this, 8, a, arguments[1]), 52, 8)
		},
		setInt8: function(a, b) {
			X(this, 1, a, Q, b)
		},
		setUint8: function(a, b) {
			X(this, 1, a, Q, b)
		},
		setInt16: function(a, b) {
			X(this, 2, a, R, b, arguments[2])
		},
		setUint16: function(a, b) {
			X(this, 2, a, R, b, arguments[2])
		},
		setInt32: function(a, b) {
			X(this, 4, a, S, b, arguments[2])
		},
		setUint32: function(a, b) {
			X(this, 4, a, S, b, arguments[2])
		},
		setFloat32: function(a, b) {
			X(this, 4, a, U, b, arguments[2])
		},
		setFloat64: function(a, b) {
			X(this, 8, a, T, b, arguments[2])
		}
	});
	q(w, r), q(x, s), h(x[t], g.VIEW, !0), b[r] = w, b[s] = x
}, function(a, b, c) {
	var d = c(2),
		e = c(25),
		f = c(33),
		g = c(113),
		h = c(7).f;
	a.exports = function(a) {
		var b = e.Symbol || (e.Symbol = f ? {} : d.Symbol || {});
		"_" == a.charAt(0) || a in b || h(b, a, {
			value: g.f(a)
		})
	}
}, function(a, b, c) {
	var d = c(46),
		e = c(5)("iterator"),
		f = c(43);
	a.exports = c(25).getIteratorMethod = function(a) {
		return void 0 != a ? a[e] || a["@@iterator"] || f[d(a)] : void 0
	}
}, function(a, b, c) {
	"use strict";
	var d = c(41),
		e = c(101),
		f = c(43),
		g = c(15);
	a.exports = c(72)(Array, "Array", function(a, b) {
		this._t = g(a), this._i = 0, this._k = b
	}, function() {
		var a = this._t,
			b = this._k,
			c = this._i++;
		return !a || c >= a.length ? (this._t = void 0, e(1)) : "keys" == b ? e(0, c) : "values" == b ? e(0, a[c]) : e(0, [c, a[c]])
	}, "values"), f.Arguments = f.Array, d("keys"), d("values"), d("entries")
}, function(a, b, c) {
	! function(a) {
		a(c(18))
	}(function(a) {
		"use strict";

		function b(b, e, f, g) {
			function h(a) {
				var d, f, c = i(b, e);
				if(!c || c.to.line - c.from.line < j) return null;
				for(d = b.findMarksAt(c.from), f = 0; f < d.length; ++f)
					if(d[f].__isFold && "fold" !== g) {
						if(!a) return null;
						c.cleared = !0, d[f].clear()
					}
				return c
			}
			var i, j, k, l, m;
			if(f && f.call ? (i = f, f = null) : i = d(b, f, "rangeFinder"), "number" == typeof e && (e = a.Pos(e, 0)), j = d(b, f, "minFoldSize"), k = h(!0), d(b, f, "scanUp"))
				for(; !k && e.line > b.firstLine();) e = a.Pos(e.line - 1, 0), k = h(!1);
			k && !k.cleared && "unfold" !== g && (l = c(b, f), a.on(l, "mousedown", function(b) {
				m.clear(), a.e_preventDefault(b)
			}), m = b.markText(k.from, k.to, {
				replacedWith: l,
				clearOnEnter: d(b, f, "clearOnEnter"),
				__isFold: !0
			}), m.on("clear", function(c, d) {
				a.signal(b, "unfold", b, c, d)
			}), a.signal(b, "fold", b, k.from, k.to))
		}

		function c(a, b) {
			var e, c = d(a, b, "widget");
			return "string" == typeof c && (e = document.createTextNode(c), c = document.createElement("span"), c.appendChild(e), c.className = "CodeMirror-foldmarker"), c
		}

		function d(a, b, c) {
			if(b && void 0 !== b[c]) return b[c];
			var d = a.options.foldOptions;
			return d && void 0 !== d[c] ? d[c] : e[c]
		}
		a.newFoldFunction = function(a, c) {
			return function(d, e) {
				b(d, e, {
					rangeFinder: a,
					widget: c
				})
			}
		}, a.defineExtension("foldCode", function(a, c, d) {
			b(this, a, c, d)
		}), a.defineExtension("isFolded", function(a) {
			for(var b = this.findMarksAt(a), c = 0; c < b.length; ++c)
				if(b[c].__isFold) return !0
		}), a.commands.toggleFold = function(a) {
			a.foldCode(a.getCursor())
		}, a.commands.fold = function(a) {
			a.foldCode(a.getCursor(), null, "fold")
		}, a.commands.unfold = function(a) {
			a.foldCode(a.getCursor(), null, "unfold")
		}, a.commands.foldAll = function(b) {
			b.operation(function() {
				for(var c = b.firstLine(), d = b.lastLine(); d >= c; c++) b.foldCode(a.Pos(c, 0), null, "fold")
			})
		}, a.commands.unfoldAll = function(b) {
			b.operation(function() {
				for(var c = b.firstLine(), d = b.lastLine(); d >= c; c++) b.foldCode(a.Pos(c, 0), null, "unfold")
			})
		}, a.registerHelper("fold", "combine", function() {
			var a = Array.prototype.slice.call(arguments, 0);
			return function(b, c) {
				for(var e, d = 0; d < a.length; ++d)
					if(e = a[d](b, c)) return e
			}
		}), a.registerHelper("fold", "auto", function(a, b) {
			for(var e, c = a.getHelpers(b, "fold"), d = 0; d < c.length; d++)
				if(e = c[d](a, b)) return e
		});
		var e = {
			rangeFinder: a.fold.auto,
			widget: "↔",
			minFoldSize: 0,
			scanUp: !1,
			clearOnEnter: !0
		};
		a.defineOption("foldOptions", null), a.defineExtension("foldOption", function(a, b) {
			return d(this, a, b)
		})
	})
}, function(a, b, c) {
	var d = Math.max;
	! function(a) {
		a(c(18))
	}(function(a) {
		"use strict";

		function b(a, b) {
			function c(a) {
				clearTimeout(d.doRedraw), d.doRedraw = setTimeout(function() {
					d.redraw()
				}, a)
			}
			this.cm = a, this.options = b, this.buttonHeight = b.scrollButtonHeight || a.getOption("scrollButtonHeight"), this.annotations = [], this.doRedraw = this.doUpdate = null, this.div = a.getWrapperElement().appendChild(document.createElement("div")), this.div.style.cssText = "position: absolute; right: 0; top: 0; z-index: 7; pointer-events: none", this.computeScale();
			var d = this;
			a.on("refresh", this.resizeHandler = function() {
				clearTimeout(d.doUpdate), d.doUpdate = setTimeout(function() {
					d.computeScale() && c(20)
				}, 100)
			}), a.on("markerAdded", this.resizeHandler), a.on("markerCleared", this.resizeHandler), !1 !== b.listenForChanges && a.on("change", this.changeHandler = function() {
				c(250)
			})
		}
		a.defineExtension("annotateScrollbar", function(a) {
			return "string" == typeof a && (a = {
				className: a
			}), new b(this, a)
		}), a.defineOption("scrollButtonHeight", 0), b.prototype.computeScale = function() {
			var a = this.cm,
				b = (a.getWrapperElement().clientHeight - a.display.barHeight - 2 * this.buttonHeight) / a.getScrollerElement().scrollHeight;
			return b != this.hScale ? (this.hScale = b, !0) : void 0
		}, b.prototype.update = function(a) {
			this.annotations = a, this.redraw()
		}, b.prototype.redraw = function(a) {
			function b(a, b) {
				if(j != a.line && (j = a.line, k = c.getLineHandle(j)), k.widgets && k.widgets.length || h && k.height > i) return c.charCoords(a, "local")[b ? "top" : "bottom"];
				var d = c.heightAtLine(k, "local");
				return d + (b ? 0 : k.height)
			}
			var c, e, f, g, h, i, j, k, l, n, o, m, p, q, r, s;
			if(!1 !== a && this.computeScale(), c = this.cm, e = this.hScale, f = document.createDocumentFragment(), g = this.annotations, h = c.getOption("lineWrapping"), i = h && 1.5 * c.defaultTextHeight(), j = null, k = null, l = c.lastLine(), c.display.barWidth)
				for(m = 0; m < g.length; m++)
					if(o = g[m], !(o.to.line > l)) {
						for(p = n || b(o.from, !0) * e, q = b(o.to, !1) * e; m < g.length - 1 && !(g[m + 1].to.line > l) && (n = b(g[m + 1].from, !0) * e, !(n > q + .9));) o = g[++m], q = b(o.to, !1) * e;
						q != p && (r = d(q - p, 3), s = f.appendChild(document.createElement("div")), s.style.cssText = "position: absolute; right: 0px; width: " + d(c.display.barWidth - 1, 2) + "px; top: " + (p + this.buttonHeight) + "px; height: " + r + "px", s.className = this.options.className, o.id && s.setAttribute("annotation-id", o.id))
					}
			this.div.textContent = "", this.div.appendChild(f)
		}, b.prototype.clear = function() {
			this.cm.off("refresh", this.resizeHandler), this.cm.off("markerAdded", this.resizeHandler), this.cm.off("markerCleared", this.resizeHandler), this.changeHandler && this.cm.off("change", this.changeHandler), this.div.parentNode.removeChild(this.div)
		}
	})
}, function(a, b, c) {
	var d = c(19);
	a.exports = function(a, b) {
		if("number" != typeof a && "Number" != d(a)) throw TypeError(b);
		return +a
	}
}, function(a, b, c) {
	"use strict";
	var d = c(9),
		e = c(39),
		f = c(8);
	a.exports = [].copyWithin || function(a, b) {
		var c = d(this),
			g = f(c.length),
			h = e(a, g),
			i = e(b, g),
			j = 2 < arguments.length ? arguments[2] : void 0,
			k = Math.min((void 0 === j ? g : e(j, g)) - i, g - h),
			l = 1;
		for(h > i && i + k > h && (l = -1, i += k - 1, h += k - 1); 0 < k--;) i in c ? c[h] = c[i] : delete c[h], h += l, i += l;
		return c
	}
}, function(a, b, c) {
	var d = c(42);
	a.exports = function(a, b) {
		var c = [];
		return d(a, !1, c.push, c, b), c
	}
}, function(a, b, c) {
	var d = c(11),
		e = c(9),
		f = c(47),
		g = c(8);
	a.exports = function(a, b, c, h, i) {
		d(b);
		var j = e(a),
			k = f(j),
			l = g(j.length),
			m = i ? l - 1 : 0,
			n = i ? -1 : 1;
		if(2 > c)
			for(;;) {
				if(m in k) {
					h = k[m], m += n;
					break
				}
				if(m += n, i ? 0 > m : m >= l) throw TypeError("Reduce of empty array with no initial value")
			}
		for(; i ? m >= 0 : l > m; m += n) m in k && (h = b(h, k[m], m, j));
		return h
	}
}, function(a, b, c) {
	"use strict";
	var d = c(11),
		e = c(4),
		f = c(53),
		g = [].slice,
		h = {},
		i = function(a, b, c) {
			if(!(b in h)) {
				for(var d = [], e = 0; b > e; e++) d[e] = "a[" + e + "]";
				h[b] = Function("F,a", "return new F(" + d.join(",") + ")")
			}
			return h[b](a, c)
		};
	a.exports = Function.bind || function(a) {
		var b = d(this),
			c = g.call(arguments, 1),
			h = function() {
				var d = c.concat(g.call(arguments));
				return this instanceof h ? i(b, d.length, d) : f(b, d, a)
			};
		return e(b.prototype) && (h.prototype = b.prototype), h
	}
}, function(a, b, c) {
	"use strict";
	var d = c(7).f,
		e = c(34),
		f = c(37),
		g = c(26),
		h = c(32),
		i = c(20),
		j = c(42),
		k = c(72),
		l = c(101),
		m = c(38),
		n = c(6),
		o = c(29).fastKey,
		p = n ? "_s" : "size",
		q = function(a, b) {
			var d, c = o(b);
			if("F" !== c) return a._i[c];
			for(d = a._f; d; d = d.n)
				if(d.k == b) return d
		};
	a.exports = {
		getConstructor: function(a, b, c, k) {
			var l = a(function(a, d) {
				h(a, l, b, "_i"), a._i = e(null), a._f = void 0, a._l = void 0, a[p] = 0, void 0 != d && j(d, c, a[k], a)
			});
			return f(l.prototype, {
				clear: function() {
					for(var a = this, b = a._i, c = a._f; c; c = c.n) c.r = !0, c.p && (c.p = c.p.n = void 0), delete b[c.i];
					a._f = a._l = void 0, a[p] = 0
				},
				"delete": function(a) {
					var d, e, b = this,
						c = q(b, a);
					return c && (d = c.n, e = c.p, delete b._i[c.i], c.r = !0, e && (e.n = d), d && (d.p = e), b._f == c && (b._f = d), b._l == c && (b._l = e), b[p]--), !!c
				},
				forEach: function(a) {
					h(this, l, "forEach");
					for(var c, b = g(a, 1 < arguments.length ? arguments[1] : void 0, 3); c = c ? c.n : this._f;)
						for(b(c.v, c.k, this); c && c.r;) c = c.p
				},
				has: function(a) {
					return !!q(this, a)
				}
			}), n && d(l.prototype, "size", {
				get: function() {
					return i(this[p])
				}
			}), l
		},
		def: function(a, b, c) {
			var e, f, d = q(a, b);
			return d ? d.v = c : (a._l = d = {
				i: f = o(b, !0),
				k: b,
				v: c,
				p: e = a._l,
				n: void 0,
				r: !1
			}, !a._f && (a._f = d), e && (e.n = d), a[p]++, "F" !== f && (a._i[f] = d)), a
		},
		getEntry: q,
		setStrong: function(a, b, c) {
			k(a, b, function(a, b) {
				this._t = a, this._k = b, this._l = void 0
			}, function() {
				for(var a = this, b = a._k, c = a._l; c && c.r;) c = c.p;
				return a._t && (a._l = c = c ? c.n : a._t._f) ? "keys" == b ? l(0, c.k) : "values" == b ? l(0, c.v) : l(0, [c.k, c.v]) : (a._t = void 0, l(1))
			}, c ? "entries" : "values", !c, !0), m(b)
		}
	}
}, function(a, b, c) {
	var d = c(46),
		e = c(92);
	a.exports = function(a) {
		return function() {
			if(d(this) != a) throw TypeError(a + "#toJSON isn't generic");
			return e(this)
		}
	}
}, function(a, b, c) {
	"use strict";
	var d = c(37),
		e = c(29).getWeak,
		f = c(1),
		g = c(4),
		h = c(32),
		i = c(42),
		j = c(22),
		k = c(10),
		l = j(5),
		m = j(6),
		n = 0,
		o = function(a) {
			return a._l || (a._l = new p)
		},
		p = function() {
			this.a = []
		},
		q = function(a, b) {
			return l(a.a, function(a) {
				return a[0] === b
			})
		};
	p.prototype = {
		get: function(a) {
			var b = q(this, a);
			return b ? b[1] : void 0
		},
		has: function(a) {
			return !!q(this, a)
		},
		set: function(a, b) {
			var c = q(this, a);
			c ? c[1] = b : this.a.push([a, b])
		},
		"delete": function(a) {
			var b = m(this.a, function(b) {
				return b[0] === a
			});
			return ~b && this.a.splice(b, 1), !!~b
		}
	}, a.exports = {
		getConstructor: function(a, b, c, f) {
			var j = a(function(a, d) {
				h(a, j, b, "_i"), a._i = n++, a._l = void 0, void 0 != d && i(d, c, a[f], a)
			});
			return d(j.prototype, {
				"delete": function(a) {
					if(!g(a)) return !1;
					var b = e(a);
					return !0 === b ? o(this)["delete"](a) : b && k(b, this._i) && delete b[this._i]
				},
				has: function(a) {
					if(!g(a)) return !1;
					var b = e(a);
					return !0 === b ? o(this).has(a) : b && k(b, this._i)
				}
			}), j
		},
		def: function(a, b, c) {
			var d = e(f(b), !0);
			return !0 === d ? o(a).set(b, c) : d[a._i] = c, a
		},
		ufstore: o
	}
}, function(a, b, c) {
	a.exports = !c(6) && !c(3)(function() {
		return 7 != Object.defineProperty(c(64)("div"), "a", {
			get: function() {
				return 7
			}
		}).a
	})
}, function(a, b, c) {
	var d = c(4),
		e = Math.floor;
	a.exports = function(a) {
		return !d(a) && isFinite(a) && e(a) === a
	}
}, function(a, b, c) {
	var d = c(1);
	a.exports = function(a, b, c, e) {
		try {
			return e ? b(d(c)[0], c[1]) : b(c)
		} catch(c) {
			var f = a["return"];
			throw void 0 !== f && d(f.call(a)), c
		}
	}
}, function(a) {
	a.exports = function(a, b) {
		return {
			value: b,
			done: !!a
		}
	}
}, function(a) {
	a.exports = Math.log1p || function(a) {
		return -1e-8 < (a = +a) && 1e-8 > a ? a - a * a / 2 : Math.log(1 + a)
	}
}, function(a, b, c) {
	"use strict";
	var d = c(36),
		e = c(57),
		f = c(48),
		g = c(9),
		h = c(47),
		i = Object.assign;
	a.exports = !i || c(3)(function() {
		var a = {},
			b = {},
			c = Symbol(),
			d = "abcdefghijklmnopqrst";
		return a[c] = 7, d.split("").forEach(function(a) {
			b[a] = a
		}), 7 != i({}, a)[c] || Object.keys(i({}, b)).join("") != d
	}) ? function(a) {
		var b, c, i, j, k, p, l, m, n, o;
		for(b = g(a), c = arguments.length, i = 1, j = e.f, k = f.f; c > i;)
			for(l = h(arguments[i++]), m = j ? d(l).concat(j(l)) : d(l), n = m.length, o = 0; n > o;) k.call(l, p = m[o++]) && (b[p] = l[p]);
		return b
	} : i
}, function(a, b, c) {
	var d = c(7),
		e = c(1),
		f = c(36);
	a.exports = c(6) ? Object.defineProperties : function(a, b) {
		e(a);
		for(var i, c = f(b), g = c.length, h = 0; g > h;) d.f(a, i = c[h++], b[i]);
		return a
	}
}, function(a, b, c) {
	var d = c(15),
		e = c(35).f,
		f = {}.toString,
		g = "object" == typeof window && window && Object.getOwnPropertyNames ? Object.getOwnPropertyNames(window) : [],
		h = function(a) {
			try {
				return e(a)
			} catch(b) {
				return g.slice()
			}
		};
	a.exports.f = function(a) {
		return g && "[object Window]" == f.call(a) ? h(a) : e(d(a))
	}
}, function(a, b, c) {
	var d = c(10),
		e = c(15),
		f = c(49)(!1),
		g = c(77)("IE_PROTO");
	a.exports = function(a, b) {
		var j, c = e(a),
			h = 0,
			i = [];
		for(j in c) j != g && d(c, j) && i.push(j);
		for(; b.length > h;) d(c, j = b[h++]) && (~f(i, j) || i.push(j));
		return i
	}
}, function(a, b, c) {
	var d = c(36),
		e = c(15),
		f = c(48).f;
	a.exports = function(a) {
		return function(b) {
			for(var k, c = e(b), g = d(c), h = g.length, i = 0, j = []; h > i;) f.call(c, k = g[i++]) && j.push(a ? [k, c[k]] : c[k]);
			return j
		}
	}
}, function(a, b, c) {
	var d = c(35),
		e = c(57),
		f = c(1),
		g = c(2).Reflect;
	a.exports = g && g.ownKeys || function(a) {
		var b = d.f(f(a)),
			c = e.f;
		return c ? b.concat(c(a)) : b
	}
}, function(a, b, c) {
	var d = c(2).parseFloat,
		e = c(45).trim;
	a.exports = 1 / d(c(82) + "-0") == -1 / 0 ? d : function(a) {
		var b = e(a + "", 3),
			c = d(b);
		return 0 === c && "-" == b.charAt(0) ? -0 : c
	}
}, function(a, b, c) {
	var d = c(2).parseInt,
		e = c(45).trim,
		f = c(82),
		g = /^[\-+]?0[xX]/;
	a.exports = 8 !== d(f + "08") || 22 !== d(f + "0x16") ? function(a, b) {
		var c = e(a + "", 3);
		return d(c, b >>> 0 || (g.test(c) ? 16 : 10))
	} : d
}, function(a) {
	a.exports = Object.is || function(a, b) {
		return a === b ? 0 !== a || 1 / a == 1 / b : a != a && b != b
	}
}, function(a, b, c) {
	var d = c(8),
		e = c(81),
		f = c(20);
	a.exports = function(a, b, c, g) {
		var l, m, h = f(a) + "",
			i = h.length,
			j = void 0 === c ? " " : c + "",
			k = d(b);
		return i >= k || "" == j ? h : (l = k - i, m = e.call(j, Math.ceil(l / j.length)), m.length > l && (m = m.slice(0, l)), g ? m + h : h + m)
	}
}, function(a, b, c) {
	b.f = c(5)
}, function(a, b, c) {
	"use strict";
	var d = c(95);
	a.exports = c(50)("Map", function(a) {
		return function() {
			return a(this, 0 < arguments.length ? arguments[0] : void 0)
		}
	}, {
		get: function(a) {
			var b = d.getEntry(this, a);
			return b && b.v
		},
		set: function(a, b) {
			return d.def(this, 0 === a ? 0 : a, b)
		}
	}, d, !0)
}, function(a, b, c) {
	c(6) && "g" != /./g.flags && c(7).f(RegExp.prototype, "flags", {
		configurable: !0,
		get: c(52)
	})
}, function(a, b, c) {
	"use strict";
	var d = c(95);
	a.exports = c(50)("Set", function(a) {
		return function() {
			return a(this, 0 < arguments.length ? arguments[0] : void 0)
		}
	}, {
		add: function(a) {
			return d.def(this, a = 0 === a ? 0 : a, a)
		}
	}, d)
}, function(a, b, c) {
	"use strict";
	var q, d = c(22)(0),
		e = c(13),
		f = c(29),
		g = c(103),
		h = c(97),
		i = c(4),
		j = f.getWeak,
		k = Object.isExtensible,
		l = h.ufstore,
		m = {},
		n = function(a) {
			return function() {
				return a(this, 0 < arguments.length ? arguments[0] : void 0)
			}
		},
		o = {
			get: function(a) {
				if(i(a)) {
					var b = j(a);
					return !0 === b ? l(this).get(a) : b ? b[this._i] : void 0
				}
			},
			set: function(a, b) {
				return h.def(this, a, b)
			}
		},
		p = a.exports = c(50)("WeakMap", n, o, h, !0, !0);
	7 != (new p).set((Object.freeze || Object)(m), 7).get(m) && (q = h.getConstructor(n), g(q.prototype, o), f.NEED = !0, d(["delete", "has", "get", "set"], function(a) {
		var b = p.prototype,
			c = b[a];
		e(b, a, function(b, d) {
			if(i(b) && !k(b)) {
				this._f || (this._f = new q);
				var e = this._f[a](b, d);
				return "set" == a ? this : e
			}
			return c.call(this, b, d)
		})
	}))
}, function(a) {
	var b = function() {
		return this
	}();
	try {
		b = b || Function("return this")() || (1, eval)("this")
	} catch(c) {
		"object" == typeof window && (b = window)
	}
	a.exports = b
}, function(a, b, c) {
	"use strict";

	function d(a) {
		return a && a.__esModule ? a : {
			"default": a
		}
	}

	function e(a, b) {
		if(!(a instanceof b)) throw new TypeError("Cannot call a class as a function")
	}
	var s, t, u, v, w, x, f = function() {
			function a(a, b) {
				for(var d, c = 0; c < b.length; c++) d = b[c], d.enumerable = d.enumerable || !1, d.configurable = !0, "value" in d && (d.writable = !0), Object.defineProperty(a, d.key, d)
			}
			return function(b, c, d) {
				return c && a(b.prototype, c), d && a(b, d), b
			}
		}(),
		g = c(18),
		h = d(g),
		i = c(323),
		j = d(i),
		k = c(322),
		l = d(k),
		m = c(324),
		n = d(m),
		o = c(125),
		p = d(o),
		q = c(123),
		r = d(q);
	c(131), c(88), c(127), c(126), c(317), c(316), c(318), c(60), c(61), c(130), c(89), c(129), c(128), c(319), c(315), s = c(121), t = d(s), u = c(122), v = d(u), w = document, x = function() {
		function a() {
			var b, c, d;
			e(this, a), b = this.form = w.forms.main, c = this.query = v.default(), this.initEditor().registerEvents(), Object.defineProperty(this, "code", {
				get: function() {
					return this.editor.getValue()
				},
				set: function(a) {
					b.code.value = a, this.editor.setValue(a)
				}
			}), d = "undefined" == typeof localStorage.onloadJSONParameter ? c.json : localStorage.onloadJSONParameter, d && (this.code = d, localStorage.removeItem("onloadJSONParameter"), this.go())
		}
		return f(a, [{
			key: "registerEvents",
			value: function() {
				var e, c, d, h, f, g, a = this,
					b = r.default.one(".copy");
				window.addEventListener("hashchange", function() {
					var b = a.query = v.default();
					b.json && (a.code = b.json), a.go()
				}), this.editor.on("change", function() {
					return a.highlightErrorLine(null)
				}), this.form.addEventListener("submit", function(b) {
					b.preventDefault(), a.go()
				}), this.form.addEventListener("reset", function(b) {
					b.preventDefault(), a.code = ""
				}), w.addEventListener("keyup", function(b) {
					b.ctrlKey && 13 === b.keyCode && a.go()
				}), b.addEventListener("click", function(a) {
					return a.preventDefault()
				}), c = !0, d = !1;
				try {
					for(f = function() {
							var a = h.value;
							a.addEventListener("click", function() {})
						}, g = r.default("[data-ga]")[Symbol.iterator](); !(c = (h = g.next()).done); c = !0) f()
				} catch(a) {
					d = !0, e = a
				} finally {
					try {
						!c && g.return && g.return()
					} finally {
						if(d) throw e
					}
				}
				return new p.default(b, {
					text: function() {
						return a.code
					}
				}), this
			}
		}, {
			key: "initEditor",
			value: function() {
				var a = this;
				return this.editor = h.default.fromTextArea(this.form.code, {
					lineNumbers: !0,
					styleActiveLine: !0,
					matchBrackets: !0,
					indentWithTabs: !0,
					autofocus: !0,
					mode: "javascript",
					foldGutter: !0,
					gutters: ["CodeMirror-linenumbers", "CodeMirror-foldgutter"]
				}), this.editor.addKeyMap({
					"Ctrl-Enter": function() {
						return a.go()
					}
				}), this
			}
		}, {
			key: "go",
			value: function() {
				var a = this,
					b = this.code,
					c = b.trim();
				return 0 === c.indexOf("http") ? t.default(c, function(b) {
					return a.validate(b)
				}, function(b) {
					return a.notify(!1, b)
				}) : this.validate(), this
			}
		}, {
			key: "reformat",
			value: function(a) {
				var b = "undefined" == typeof a ? this.code : a;
			//	b = unescape(b.replace(/\\u/g, "%u"));
				return b, "compress" === this.query.reformat ? b = n.default(b) || b : "no" !== this.query.reformat && (b = l.default.js_beautify(b, {
					indent_with_tabs: !0
				})), this.code = b, this
			}
		}, {
			key: "validate",
			value: function(a) {
				var c, d, b = this.code;
				b = b.trim(), (b.startWith("'{") && b.endWith("}'") || b.startWith("'\\[") && b.endWith("]'") || b.startWith('"\\[') && b.endWith(']"') || b.startWith('"{') && b.endWith('}"')) && (c = window.confirm("您发的JSON是一个字符串,而不是对象,您需要转成JSON对象么?"), 1 == c && (b = b.substr(1, b.length - 2), b = b.replace(/\\\\/g, "\\").replace(/\\\"/g, '"'))), this.code = b, this.reformat(a);
				try {
					j.default.parse(b), this.notify(!0, "正确的JSON")
				} catch(b) {
					d = b.message.match(/第([0-9]*)行/), d && 1 < d.length && this.highlightErrorLine(+d[1] - 1), this.notify(!1, b)
				}
				return this
			}
		}, {
			key: "notify",
			value: function(a, b) {
				b && b.message && (b = b.message, b = b.replace(/\t/g, " "));
				var c = r.default.one("#result");
				return r.default.one("#result-container").classList.add("shown"), c.classList[a ? "add" : "remove"]("success"), c.classList[a ? "remove" : "add"]("error"), c.innerHTML = b, this
			}
		}, {
			key: "highlightErrorLine",
			value: function(a) {
				return "number" == typeof a ? (this.errorLine = this.editor.addLineClass(a, "background", "line-error"), this.editor.setCursor(a)) : this.errorLine && (this.editor.removeLineClass(this.errorLine, "background", "line-error"), this.errorLine = null), this
			}
		}]), a
	}(), a.exports = new x
}, function(a, b, c) {
	"use strict";
	! function(a) {
		function b(a, b, c) {
			a[b] || Object[d](a, b, {
				writable: !0,
				configurable: !0,
				value: c
			})
		}
		if(c(312), c(326), c(132), a._babelPolyfill) throw new Error("only one instance of babel-polyfill is allowed");
		a._babelPolyfill = !0;
		var d = "defineProperty";
		b(String.prototype, "padLeft", "".padStart), b(String.prototype, "padRight", "".padEnd), "pop,reverse,shift,keys,values,entries,indexOf,every,some,forEach,map,filter,find,findIndex,includes,join,slice,concat,push,splice,unshift,sort,lastIndexOf,reduce,reduceRight,copyWithin,fill".split(",").forEach(function(a) {
			[][a] && b(Array, a, Function.call.bind([][a]))
		})
	}.call(b, c(118))
}, function(a, b) {
	"use strict";
	Object.defineProperty(b, "__esModule", {
		value: !0
	}), b.default = function(a, b, c) {
		var d = new XMLHttpRequest;
		return d.onreadystatechange = function() {
			if(d.readyState === XMLHttpRequest.DONE)
				if(200 === d.status) {
					var a = JSON.parse(d.responseText);
					a.error ? c(a.result) : b(a.content)
				} else c(d.statusText || "Unable to connect")
		}, d.open("POST", "proxy.php"), d.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"), d.send("url=" + encodeURIComponent(a)), this
	}
}, function(a, b) {
	"use strict";
	Object.defineProperty(b, "__esModule", {
		value: !0
	});
	var c = function() {
		function a(a, b) {
			var f, h, g, c = [],
				d = !0,
				e = !1;
			try {
				for(g = a[Symbol.iterator](); !((d = (h = g.next()).done) || (c.push(h.value), b && c.length === b)); d = !0);
			} catch(a) {
				e = !0, f = a
			} finally {
				try {
					!d && g["return"] && g["return"]()
				} finally {
					if(e) throw f
				}
			}
			return c
		}
		return function(b, c) {
			if(Array.isArray(b)) return b;
			if(Symbol.iterator in Object(b)) return a(b, c);
			throw new TypeError("Invalid attempt to destructure non-iterable instance")
		}
	}();
	b.default = function() {
		var h, f, g, j, i, k, l, m, n, o, a = location,
			b = a.search,
			d = {},
			e = b.replace("?", "").split("&");
		if(!b) return d;
		f = !0, g = !1;
		try {
			for(i = e[Symbol.iterator](); !(f = (j = i.next()).done); f = !0) k = j.value, l = k.split("="), m = c(l, 2), n = m[0], o = m[1], d[decodeURIComponent(n)] = decodeURIComponent(o || null)
		} catch(a) {
			g = !0, h = a
		} finally {
			try {
				!f && i.return && i.return()
			} finally {
				if(g) throw h
			}
		}
		return d
	}
}, function(a, b) {
	var c, d;
	! function(e, f) {
		var f = function(a, b, c) {
			function d(e, f, g) {
				return g = Object.create(d.fn), e && g.push.apply(g, e[b] ? [e] : "" + e === e ? /</.test(e) ? ((f = a.createElement(f)).innerHTML = e, f.children) : f ? (f = d(f)[0]) ? f[c](e) : g : a[c](e) : e), g
			}
			return d.fn = [], d.one = function(a, b) {
				return d(a, b)[0] || null
			}, d
		}(document, "addEventListener", "querySelectorAll");
		c = [], d = function() {
			return f
		}.apply(b, c), !(void 0 !== d && (a.exports = d))
	}(this)
}, function(a, b, c) {
	var d, e, f;
	! function(g, h) {
		e = [a, c(327)], d = h, f = "function" == typeof d ? d.apply(b, e) : d, !(void 0 !== f && (a.exports = f))
	}(this, function(a, b) {
		"use strict";

		function c(a, b) {
			if(!(a instanceof b)) throw new TypeError("Cannot call a class as a function")
		}
		var d = function(a) {
				return a && a.__esModule ? a : {
					"default": a
				}
			}(b),
			e = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(a) {
				return typeof a
			} : function(a) {
				return a && "function" == typeof Symbol && a.constructor === Symbol && a !== Symbol.prototype ? "symbol" : typeof a
			},
			f = function() {
				function a(a, b) {
					for(var d, c = 0; c < b.length; c++) d = b[c], d.enumerable = d.enumerable || !1, d.configurable = !0, "value" in d && (d.writable = !0), Object.defineProperty(a, d.key, d)
				}
				return function(b, c, d) {
					return c && a(b.prototype, c), d && a(b, d), b
				}
			}(),
			g = function() {
				function a(b) {
					c(this, a), this.resolveOptions(b), this.initSelection()
				}
				return f(a, [{
					key: "resolveOptions",
					value: function() {
						var a = 0 < arguments.length && void 0 !== arguments[0] ? arguments[0] : {};
						this.action = a.action, this.container = a.container, this.emitter = a.emitter, this.target = a.target, this.text = a.text, this.trigger = a.trigger, this.selectedText = ""
					}
				}, {
					key: "initSelection",
					value: function() {
						this.text ? this.selectFake() : this.target && this.selectTarget()
					}
				}, {
					key: "selectFake",
					value: function() {
						var c, a = this,
							b = "rtl" == document.documentElement.getAttribute("dir");
						this.removeFake(), this.fakeHandlerCallback = function() {
							return a.removeFake()
						}, this.fakeHandler = this.container.addEventListener("click", this.fakeHandlerCallback) || !0, this.fakeElem = document.createElement("textarea"), this.fakeElem.style.fontSize = "12pt", this.fakeElem.style.border = "0", this.fakeElem.style.padding = "0", this.fakeElem.style.margin = "0", this.fakeElem.style.position = "absolute", this.fakeElem.style[b ? "right" : "left"] = "-9999px", c = window.pageYOffset || document.documentElement.scrollTop, this.fakeElem.style.top = c + "px", this.fakeElem.setAttribute("readonly", ""), this.fakeElem.value = this.text, this.container.appendChild(this.fakeElem), this.selectedText = d.default(this.fakeElem), this.copyText()
					}
				}, {
					key: "removeFake",
					value: function() {
						this.fakeHandler && (this.container.removeEventListener("click", this.fakeHandlerCallback), this.fakeHandler = null, this.fakeHandlerCallback = null), this.fakeElem && (this.container.removeChild(this.fakeElem), this.fakeElem = null)
					}
				}, {
					key: "selectTarget",
					value: function() {
						this.selectedText = d.default(this.target), this.copyText()
					}
				}, {
					key: "copyText",
					value: function() {
						var a;
						try {
							a = document.execCommand(this.action)
						} catch(b) {
							a = !1
						}
						this.handleResult(a)
					}
				}, {
					key: "handleResult",
					value: function(a) {
						this.emitter.emit(a ? "success" : "error", {
							action: this.action,
							text: this.selectedText,
							trigger: this.trigger,
							clearSelection: this.clearSelection.bind(this)
						})
					}
				}, {
					key: "clearSelection",
					value: function() {
						this.trigger && this.trigger.focus(), window.getSelection().removeAllRanges()
					}
				}, {
					key: "destroy",
					value: function() {
						this.removeFake()
					}
				}, {
					key: "action",
					set: function() {
						var a = 0 < arguments.length && void 0 !== arguments[0] ? arguments[0] : "copy";
						if(this._action = a, "copy" !== this._action && "cut" !== this._action) throw new Error('Invalid "action" value, use either "copy" or "cut"')
					},
					get: function() {
						return this._action
					}
				}, {
					key: "target",
					set: function(a) {
						if(void 0 !== a) {
							if(!a || "object" !== ("undefined" == typeof a ? "undefined" : e(a)) || 1 !== a.nodeType) throw new Error('Invalid "target" value, use a valid Element');
							if("copy" === this.action && a.hasAttribute("disabled")) throw new Error('Invalid "target" attribute. Please use "readonly" instead of "disabled" attribute');
							if("cut" === this.action && (a.hasAttribute("readonly") || a.hasAttribute("disabled"))) throw new Error('Invalid "target" attribute. You can\'t cut text from elements with "readonly" or "disabled" attributes');
							this._target = a
						}
					},
					get: function() {
						return this._target
					}
				}]), a
			}();
		a.exports = g
	})
}, function(a, b, c) {
	var d, e, f;
	! function(g, h) {
		e = [a, c(124), c(328), c(321)], d = h, f = "function" == typeof d ? d.apply(b, e) : d, !(void 0 !== f && (a.exports = f))
	}(this, function(a, b, c, d) {
		"use strict";

		function e(a) {
			return a && a.__esModule ? a : {
				"default": a
			}
		}

		function f(a, b) {
			if(!(a instanceof b)) throw new TypeError("Cannot call a class as a function")
		}

		function g(a, b) {
			if(!a) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
			return !b || "object" != typeof b && "function" != typeof b ? a : b
		}

		function h(a, b) {
			if("function" != typeof b && null !== b) throw new TypeError("Super expression must either be null or a function, not " + typeof b);
			a.prototype = Object.create(b && b.prototype, {
				constructor: {
					value: a,
					enumerable: !1,
					writable: !0,
					configurable: !0
				}
			}), b && (Object.setPrototypeOf ? Object.setPrototypeOf(a, b) : a.__proto__ = b)
		}

		function i(a, b) {
			var c = "data-clipboard-" + a;
			return b.hasAttribute(c) ? b.getAttribute(c) : void 0
		}
		var j = e(b),
			k = e(c),
			l = e(d),
			m = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(a) {
				return typeof a
			} : function(a) {
				return a && "function" == typeof Symbol && a.constructor === Symbol && a !== Symbol.prototype ? "symbol" : typeof a
			},
			n = function() {
				function a(a, b) {
					for(var d, c = 0; c < b.length; c++) d = b[c], d.enumerable = d.enumerable || !1, d.configurable = !0, "value" in d && (d.writable = !0), Object.defineProperty(a, d.key, d)
				}
				return function(b, c, d) {
					return c && a(b.prototype, c), d && a(b, d), b
				}
			}(),
			o = function(a) {
				function b(a, c) {
					f(this, b);
					var d = g(this, (b.__proto__ || Object.getPrototypeOf(b)).call(this));
					return d.resolveOptions(c), d.listenClick(a), d
				}
				return h(b, a), n(b, [{
					key: "resolveOptions",
					value: function() {
						var a = 0 < arguments.length && void 0 !== arguments[0] ? arguments[0] : {};
						this.action = "function" == typeof a.action ? a.action : this.defaultAction, this.target = "function" == typeof a.target ? a.target : this.defaultTarget, this.text = "function" == typeof a.text ? a.text : this.defaultText, this.container = "object" === m(a.container) ? a.container : document.body
					}
				}, {
					key: "listenClick",
					value: function(a) {
						var b = this;
						this.listener = l.default(a, "click", function(a) {
							return b.onClick(a)
						})
					}
				}, {
					key: "onClick",
					value: function(a) {
						var b = a.delegateTarget || a.currentTarget;
						this.clipboardAction && (this.clipboardAction = null), this.clipboardAction = new j.default({
							action: this.action(b),
							target: this.target(b),
							text: this.text(b),
							container: this.container,
							trigger: b,
							emitter: this
						})
					}
				}, {
					key: "defaultAction",
					value: function(a) {
						return i("action", a)
					}
				}, {
					key: "defaultTarget",
					value: function(a) {
						var b = i("target", a);
						return b ? document.querySelector(b) : void 0
					}
				}, {
					key: "defaultText",
					value: function(a) {
						return i("text", a)
					}
				}, {
					key: "destroy",
					value: function() {
						this.listener.destroy(), this.clipboardAction && (this.clipboardAction.destroy(), this.clipboardAction = null)
					}
				}], [{
					key: "isSupported",
					value: function() {
						var a = 0 < arguments.length && void 0 !== arguments[0] ? arguments[0] : ["copy", "cut"],
							b = "string" == typeof a ? [a] : a,
							c = !!document.queryCommandSupported;
						return b.forEach(function(a) {
							c = c && !!document.queryCommandSupported(a)
						}), c
					}
				}]), b
			}(k.default);
		a.exports = o
	})
}, function(a, b, c) {
	var d = Math.min;
	! function(a) {
		a(c(18))
	}(function(a) {
		"use strict";
		a.registerHelper("fold", "brace", function(b, c) {
			function e(d) {
				for(var i, e = c.ch, h = 0;;)
					if(i = 0 >= e ? -1 : g.lastIndexOf(d, e - 1), -1 != i) {
						if(1 == h && i < c.ch) break;
						if(k = b.getTokenTypeAt(a.Pos(f, i + 1)), !/^(comment|string)/.test(k)) return i + 1;
						e = i - 1
					} else {
						if(1 == h) break;
						h = 1, e = g.length
					}
			}
			var k, n, o, l, m, p, q, r, s, t, f = c.line,
				g = b.getLine(f),
				h = "{",
				i = "}",
				j = e("{");
			if(null == j && (h = "[", i = "]", j = e("[")), null != j) {
				l = 1, m = b.lastLine();
				a: for(p = f; m >= p; ++p)
					for(q = b.getLine(p), r = p == f ? j : 0; s = q.indexOf(h, r), t = q.indexOf(i, r), 0 > s && (s = q.length), 0 > t && (t = q.length), r = d(s, t), r != q.length;) {
						if(b.getTokenTypeAt(a.Pos(p, r + 1)) == k)
							if(r == s) ++l;
							else if(!--l) {
							n = p, o = r;
							break a
						}++r
					}
				return null == n || f == n && o == j ? void 0 : {
					from: a.Pos(f, j),
					to: a.Pos(n, o)
				}
			}
		}), a.registerHelper("fold", "import", function(b, c) {
			function e(c) {
				var e, f, g, h, i;
				if(c < b.firstLine() || c > b.lastLine()) return null;
				if(e = b.getTokenAt(a.Pos(c, 1)), /\S/.test(e.string) || (e = b.getTokenAt(a.Pos(c, e.end + 1))), "keyword" != e.type || "import" != e.string) return null;
				for(f = c, g = d(b.lastLine(), c + 10); g >= f; ++f)
					if(h = b.getLine(f), i = h.indexOf(";"), -1 != i) return {
						startCh: e.end,
						end: a.Pos(f, i)
					}
			}
			var h, j, i, f = c.line,
				g = e(f);
			if(!g || e(f - 1) || (h = e(f - 2)) && h.end.line == f - 1) return null;
			for(i = g.end; j = e(i.line + 1), null != j;) i = j.end;
			return {
				from: b.clipPos(a.Pos(f, g.startCh + 1)),
				to: i
			}
		}), a.registerHelper("fold", "include", function(b, c) {
			function d(c) {
				if(c < b.firstLine() || c > b.lastLine()) return null;
				var d = b.getTokenAt(a.Pos(c, 1));
				return /\S/.test(d.string) || (d = b.getTokenAt(a.Pos(c, d.end + 1))), "meta" == d.type && "#include" == d.string.slice(0, 8) ? d.start + 8 : void 0
			}
			var h, g, e = c.line,
				f = d(e);
			if(null == f || null != d(e - 1)) return null;
			for(g = e; h = d(g + 1), null != h;) ++g;
			return {
				from: a.Pos(e, f + 1),
				to: b.clipPos(a.Pos(g))
			}
		})
	})
}, function(a, b, c) {
	! function(a) {
		a(c(18), c(88))
	}(function(a) {
		"use strict";

		function b(a) {
			this.options = a, this.from = this.to = 0
		}

		function c(a) {
			return !0 === a && (a = {}), null == a.gutter && (a.gutter = "CodeMirror-foldgutter"), null == a.indicatorOpen && (a.indicatorOpen = "CodeMirror-foldgutter-open"), null == a.indicatorFolded && (a.indicatorFolded = "CodeMirror-foldgutter-folded"), a
		}

		function d(a, b) {
			for(var c = a.findMarks(l(b, 0), l(b + 1, 0)), d = 0; d < c.length; ++d)
				if(c[d].__isFold && c[d].find().from.line == b) return c[d]
		}

		function e(a) {
			if("string" == typeof a) {
				var b = document.createElement("div");
				return b.className = a + " CodeMirror-guttermarker-subtle", b
			}
			return a.cloneNode(!0)
		}

		function f(a, b, c) {
			var f = a.state.foldGutter.options,
				g = b,
				h = a.foldOption(f, "minFoldSize"),
				i = a.foldOption(f, "rangeFinder");
			a.eachLine(b, c, function(b) {
				var j, k, c = null;
				d(a, g) ? c = e(f.indicatorFolded) : (j = l(g, 0), k = i && i(a, j), k && k.to.line - k.from.line >= h && (c = e(f.indicatorOpen))), a.setGutterMarker(b, f.gutter, c), ++g
			})
		}

		function g(a) {
			var b = a.getViewport(),
				c = a.state.foldGutter;
			c && (a.operation(function() {
				f(a, b.from, b.to)
			}), c.from = b.from, c.to = b.to)
		}

		function h(a, b, c) {
			var f, g, e = a.state.foldGutter;
			e && (f = e.options, c == f.gutter && (g = d(a, b), g ? g.clear() : a.foldCode(l(b, 0), f.rangeFinder)))
		}

		function i(a) {
			var c, b = a.state.foldGutter;
			b && (c = b.options, b.from = b.to = 0, clearTimeout(b.changeUpdate), b.changeUpdate = setTimeout(function() {
				g(a)
			}, c.foldOnChangeTimeSpan || 600))
		}

		function j(a) {
			var c, b = a.state.foldGutter;
			b && (c = b.options, clearTimeout(b.changeUpdate), b.changeUpdate = setTimeout(function() {
				var c = a.getViewport();
				b.from == b.to || 20 < c.from - b.to || 20 < b.from - c.to ? g(a) : a.operation(function() {
					c.from < b.from && (f(a, c.from, b.from), b.from = c.from), c.to > b.to && (f(a, b.to, c.to), b.to = c.to)
				})
			}, c.updateViewportTimeSpan || 400))
		}

		function k(a, b) {
			var d, c = a.state.foldGutter;
			c && (d = b.line, d >= c.from && d < c.to && f(a, d, d + 1))
		}
		a.defineOption("foldGutter", !1, function(d, e, f) {
			f && f != a.Init && (d.clearGutter(d.state.foldGutter.options.gutter), d.state.foldGutter = null, d.off("gutterClick", h), d.off("change", i), d.off("viewportChange", j), d.off("fold", k), d.off("unfold", k), d.off("swapDoc", i)), e && (d.state.foldGutter = new b(c(e)), g(d), d.on("gutterClick", h), d.on("change", i), d.on("viewportChange", j), d.on("fold", k), d.on("unfold", k), d.on("swapDoc", i))
		});
		var l = a.Pos
	})
}, function(a, b, c) {
	! function(a) {
		a(c(18), c(60))
	}(function(a) {
		"use strict";

		function b(a, b, c, d, e) {
			a.openDialog ? a.openDialog(b, e, {
				value: d,
				selectValueOnOpen: !0
			}) : e(prompt(c, d))
		}

		function c(a, b) {
			var c = +b;
			return /^[-+]/.test(b) ? a.getCursor().line + c : c - 1
		}
		a.commands.jumpToLine = function(a) {
			var d = a.getCursor();
			b(a, 'Jump to line: <input type="text" style="width: 10em" class="CodeMirror-search-field"/> <span style="color: #888" class="CodeMirror-search-hint">(Use line:column or scroll% syntax)</span>', "Jump to line:", d.line + 1 + ":" + d.ch, function(b) {
				var e, f;
				b && ((e = /^\s*([\+\-]?\d+)\s*\:\s*(\d+)\s*$/.exec(b)) ? a.setCursor(c(a, e[1]), +e[2]) : (e = /^\s*([\+\-]?\d+(\.\d+)?)\%\s*/.exec(b)) ? (f = Math.round(a.lineCount() * +e[1] / 100), /^[-+]/.test(e[1]) && (f = d.line + f + 1), a.setCursor(f - 1, d.ch)) : (e = /^\s*\:?\s*([\+\-]?\d+)\s*/.exec(b)) && a.setCursor(c(a, e[1]), d.ch))
			})
		}, a.keyMap["default"]["Alt-G"] = "jumpToLine"
	})
}, function(a, b, c) {
	var d = Math.max;
	! function(a) {
		a(c(18), c(61), c(89))
	}(function(a) {
		"use strict";

		function b(a, b, c, d) {
			var e, f, g;
			this.cm = a, this.options = d, e = {
				listenForChanges: !1
			};
			for(f in d) e[f] = d[f];
			e.className || (e.className = "CodeMirror-search-match"), this.annotation = a.annotateScrollbar(e), this.query = b, this.caseFold = c, this.gap = {
				from: a.firstLine(),
				to: a.lastLine() + 1
			}, this.matches = [], this.update = null, this.findMatches(), this.annotation.update(this.matches), g = this, a.on("change", this.changeHandler = function(a, b) {
				g.onChange(b)
			})
		}

		function c(a, b, c) {
			return b >= a ? a : d(b, a + c)
		}
		a.defineExtension("showMatchesOnScrollbar", function(a, c, d) {
			return "string" == typeof d && (d = {
				className: d
			}), d || (d = {}), new b(this, a, c, d)
		}), b.prototype.findMatches = function() {
			var c, b, d, e;
			if(this.gap) {
				for(b = 0; b < this.matches.length && (c = this.matches[b], !(c.from.line >= this.gap.to)); b++) c.to.line >= this.gap.from && this.matches.splice(b--, 1);
				for(d = this.cm.getSearchCursor(this.query, a.Pos(this.gap.from, 0), this.caseFold), e = this.options && this.options.maxMatches || 1e3; !(!d.findNext() || (c = {
						from: d.from(),
						to: d.to()
					}, c.from.line >= this.gap.to) || (this.matches.splice(b++, 0, c), this.matches.length > e)););
				this.gap = null
			}
		}, b.prototype.onChange = function(b) {
			var h, i, j, k, l, e = b.from.line,
				f = a.changeEnd(b).line,
				g = f - b.to.line;
			if(this.gap ? (this.gap.from = Math.min(c(this.gap.from, e, g), b.from.line), this.gap.to = d(c(this.gap.to, e, g), b.from.line)) : this.gap = {
					from: b.from.line,
					to: f + 1
				}, g)
				for(h = 0; h < this.matches.length; h++) i = this.matches[h], j = c(i.from.line, e, g), j != i.from.line && (i.from = a.Pos(j, i.from.ch)), k = c(i.to.line, e, g), k != i.to.line && (i.to = a.Pos(k, i.to.ch));
			clearTimeout(this.update), l = this, this.update = setTimeout(function() {
				l.updateAfterChange()
			}, 250)
		}, b.prototype.updateAfterChange = function() {
			this.findMatches(), this.annotation.update(this.matches)
		}, b.prototype.clear = function() {
			this.cm.off("change", this.changeHandler), this.annotation.clear()
		}
	})
}, function(a, b, c) {
	! function(a) {
		a(c(18), c(61), c(60))
	}(function(a) {
		"use strict";

		function b(a, b) {
			return "string" == typeof a ? a = new RegExp(a.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g, "\\$&"), b ? "gi" : "g") : !a.global && (a = new RegExp(a.source, a.ignoreCase ? "gi" : "g")), {
				token: function(b) {
					a.lastIndex = b.pos;
					var c = a.exec(b.string);
					return c && c.index == b.pos ? (b.pos += c[0].length || 1, "searching") : void(c ? b.pos = c.index : b.skipToEnd())
				}
			}
		}

		function c() {
			this.posFrom = this.posTo = this.lastQuery = this.query = null, this.overlay = null
		}

		function d(a) {
			return a.state.search || (a.state.search = new c)
		}

		function e(a) {
			return "string" == typeof a && a == a.toLowerCase()
		}

		function f(a, b, c) {
			return a.getSearchCursor(b, c, e(b))
		}

		function g(a, b, c, d, e) {
			a.openDialog(b, d, {
				value: c,
				selectValueOnOpen: !0,
				closeOnEnter: !1,
				onClose: function() {
					o(a)
				},
				onKeyDown: e
			})
		}

		function h(a, b, c, d, e) {
			a.openDialog ? a.openDialog(b, e, {
				value: d,
				selectValueOnOpen: !0
			}) : e(prompt(c, d))
		}

		function i(a, b, c, d) {
			a.openConfirm ? a.openConfirm(b, d) : confirm(c) && d[0]()
		}

		function j(a) {
			return a.replace(/\\(.)/g, function(a, b) {
				return "n" == b ? "\n" : "r" == b ? "\r" : b
			})
		}

		function k(a) {
			var b = a.match(/^\/(.*)\/([a-z]*)$/);
			if(b) try {
				a = new RegExp(b[1], -1 == b[2].indexOf("i") ? "" : "i")
			} catch(b) {} else a = j(a);
			return("string" == typeof a ? "" == a : a.test("")) && (a = /x^/), a
		}

		function l(a, c, d) {
			c.queryText = d, c.query = k(d), a.removeOverlay(c.overlay, e(c.query)), c.overlay = b(c.query, e(c.query)), a.addOverlay(c.overlay), a.showMatchesOnScrollbar && (c.annotate && (c.annotate.clear(), c.annotate = null), c.annotate = a.showMatchesOnScrollbar(c.query, e(c.query)))
		}

		function m(b, c, e, f) {
			var j, k, m, i = d(b);
			return i.query ? n(b, c) : (j = b.getSelection() || i.lastQuery, e && b.openDialog ? (k = null, m = function(c, d) {
				a.e_stop(d), c && (c != i.queryText && (l(b, i, c), i.posFrom = i.posTo = b.getCursor()), k && (k.style.opacity = 1), n(b, d.shiftKey, function(a, c) {
					var d;
					3 > c.line && document.querySelector && (d = b.display.wrapper.querySelector(".CodeMirror-dialog")) && d.getBoundingClientRect().bottom - 4 > b.cursorCoords(c, "window").top && ((k = d).style.opacity = .4)
				}))
			}, g(b, r, j, m, function(c, e) {
				var f = a.keyName(c),
					g = a.keyMap[b.getOption("keyMap")][f];
				g || (g = b.getOption("extraKeys")[f]), "findNext" == g || "findPrev" == g || "findPersistentNext" == g || "findPersistentPrev" == g ? (a.e_stop(c), l(b, d(b), e), b.execCommand(g)) : ("find" == g || "findPersistent" == g) && (a.e_stop(c), m(e, c))
			}), f && j && (l(b, i, j), n(b, c))) : h(b, r, "Search for:", j, function(a) {
				a && !i.query && b.operation(function() {
					l(b, i, a), i.posFrom = i.posTo = b.getCursor(), n(b, c)
				})
			}), void 0)
		}

		function n(b, c, e) {
			b.operation(function() {
				var g = d(b),
					h = f(b, g.query, c ? g.posFrom : g.posTo);
				!h.find(c) && (h = f(b, g.query, c ? a.Pos(b.lastLine()) : a.Pos(b.firstLine(), 0)), !h.find(c)) || (b.setSelection(h.from(), h.to()), b.scrollIntoView({
					from: h.from(),
					to: h.to()
				}, 20), g.posFrom = h.from(), g.posTo = h.to(), e && e(h.from(), h.to()))
			})
		}

		function o(a) {
			a.operation(function() {
				var b = d(a);
				b.lastQuery = b.query, b.query && (b.query = b.queryText = null, a.removeOverlay(b.overlay), b.annotate && (b.annotate.clear(), b.annotate = null))
			})
		}

		function p(a, b, c) {
			a.operation(function() {
				var d, e;
				for(d = f(a, b); d.findNext();) "string" != typeof b ? (e = a.getRange(d.from(), d.to()).match(b), d.replace(c.replace(/\$(\d)/g, function(a, b) {
					return e[b]
				}))) : d.replace(c)
			})
		}

		function q(a, b) {
			if(!a.getOption("readOnly")) {
				var c = a.getSelection() || d(a).lastQuery,
					e = '<span class="CodeMirror-search-label">' + (b ? "Replace all:" : "Replace:") + "</span>";
				h(a, e + s, e, c, function(c) {
					c && (c = k(c), h(a, t, "Replace with:", "", function(d) {
						if(d = j(d), b) p(a, c, d);
						else {
							o(a);
							var e = f(a, c, a.getCursor("from")),
								g = function() {
									var j, b = e.from();
									!(j = e.findNext()) && (e = f(a, c), !(j = e.findNext()) || b && e.from().line == b.line && e.from().ch == b.ch) || (a.setSelection(e.from(), e.to()), a.scrollIntoView({
										from: e.from(),
										to: e.to()
									}), i(a, u, "Replace?", [function() {
										h(j)
									}, g, function() {
										p(a, c, d)
									}]))
								},
								h = function(a) {
									e.replace("string" == typeof c ? d : d.replace(/\$(\d)/g, function(b, c) {
										return a[c]
									})), g()
								};
							g()
						}
					}))
				})
			}
		}
		var r = '<span class="CodeMirror-search-label">Search:</span> <input type="text" style="width: 10em" class="CodeMirror-search-field"/> <span style="color: #888" class="CodeMirror-search-hint">(Use /re/ syntax for regexp search)</span>',
			s = ' <input type="text" style="width: 10em" class="CodeMirror-search-field"/> <span style="color: #888" class="CodeMirror-search-hint">(Use /re/ syntax for regexp search)</span>',
			t = '<span class="CodeMirror-search-label">With:</span> <input type="text" style="width: 10em" class="CodeMirror-search-field"/>',
			u = '<span class="CodeMirror-search-label">Replace?</span> <button>Yes</button> <button>No</button> <button>All</button> <button>Stop</button>';
		a.commands.find = function(a) {
			o(a), m(a)
		}, a.commands.findPersistent = function(a) {
			o(a), m(a, !1, !0)
		}, a.commands.findPersistentNext = function(a) {
			m(a, !1, !0, !0)
		}, a.commands.findPersistentPrev = function(a) {
			m(a, !0, !0, !0)
		}, a.commands.findNext = m, a.commands.findPrev = function(a) {
			m(a, !0)
		}, a.commands.clearSearch = o, a.commands.replace = q, a.commands.replaceAll = function(a) {
			q(a, !0)
		}
	})
}, function(a, b, c) {
	! function(a) {
		a(c(18))
	}(function(a) {
		"use strict";

		function b(a, b, c) {
			return /^(?:operator|sof|keyword c|case|new|export|default|[\[{}\(,;:]|=>)$/.test(b.lastType) || "quasi" == b.lastType && /\{\s*$/.test(a.string.slice(0, a.pos - (c || 0)))
		}
		a.defineMode("javascript", function(c, d) {
			function e(a) {
				for(var d, b = !1, c = !1; null != (d = a.next());) {
					if(!b) {
						if("/" == d && !c) return;
						"[" == d ? c = !0 : c && "]" == d && (c = !1)
					}
					b = !b && "\\" == d
				}
			}

			function f(a, b, c) {
				return Mb = a, Nb = c, b
			}

			function g(a, c) {
				var g, k, d = a.next();
				return '"' == d || "'" == d ? (c.tokenize = h(d), c.tokenize(a, c)) : "." == d && a.match(/^\d+(?:[eE][+\-]?\d+)?/) ? f("number", "number") : "." == d && a.match("..") ? f("spread", "meta") : /[\[\]{}\(\),;\:\.]/.test(d) ? f(d) : "=" == d && a.eat(">") ? f("=>", "operator") : "0" == d && a.eat(/x/i) ? (a.eatWhile(/[\da-f]/i), f("number", "number")) : "0" == d && a.eat(/o/i) ? (a.eatWhile(/[0-7]/i), f("number", "number")) : "0" == d && a.eat(/b/i) ? (a.eatWhile(/[01]/i), f("number", "number")) : /\d/.test(d) ? (a.match(/^\d*(?:\.\d*)?(?:[eE][+\-]?\d+)?/), f("number", "number")) : "/" == d ? a.eat("*") ? (c.tokenize = i, i(a, c)) : a.eat("/") ? (a.skipToEnd(), f("comment", "comment")) : b(a, c, 1) ? (e(a), a.match(/^\b(([gimyu])(?![gimyu]*\2))+\b/), f("regexp", "string-2")) : (a.eatWhile(Gb), f("operator", "operator", a.current())) : "`" == d ? (c.tokenize = j, j(a, c)) : "#" == d ? (a.skipToEnd(), f("error", "error")) : Gb.test(d) ? (">" == d && c.lexical && ">" == c.lexical.type || a.eatWhile(Gb), f("operator", "operator", a.current())) : Eb.test(d) ? (a.eatWhile(Eb), g = a.current(), k = Fb.propertyIsEnumerable(g) && Fb[g], k && "." != c.lastType ? f(k.type, k.style, g) : f("variable", "variable", g)) : void 0
			}

			function h(a) {
				return function(b, c) {
					var e, d = !1;
					if(Bb && "@" == b.peek() && b.match(Hb)) return c.tokenize = g, f("jsonld-keyword", "meta");
					for(; null != (e = b.next()) && (e != a || d);) d = !d && "\\" == e;
					return d || (c.tokenize = g), f("string", "string")
				}
			}

			function i(a, b) {
				for(var d, c = !1; d = a.next();) {
					if("/" == d && c) {
						b.tokenize = g;
						break
					}
					c = "*" == d
				}
				return f("comment", "comment")
			}

			function j(a, b) {
				for(var d, c = !1; null != (d = a.next());) {
					if(!c && ("`" == d || "$" == d && a.eat("{"))) {
						b.tokenize = g;
						break
					}
					c = !c && "\\" == d
				}
				return f("quasi", "string-2", a.current())
			}

			function k(a, b) {
				var c, d, e, f, g, h, i;
				if(b.fatArrowAt && (b.fatArrowAt = null), c = a.string.indexOf("=>", a.start), !(0 > c)) {
					for(Db && (d = /:\s*(?:\w+(?:<[^>]*>|\[\])?|\{[^}]*\})\s*$/.exec(a.string.slice(a.start, c)), d && (c = d.index)), e = 0, f = !1, g = c - 1; g >= 0; --g)
						if(h = a.string.charAt(g), i = Ib.indexOf(h), i >= 0 && 3 > i) {
							if(!e) {
								++g;
								break
							}
							if(0 == --e) {
								"(" == h && (f = !0);
								break
							}
						} else if(i >= 3 && 6 > i) ++e;
					else if(Eb.test(h)) f = !0;
					else {
						if(/["'\/]/.test(h)) return;
						if(f && !e) {
							++g;
							break
						}
					}
					f && !e && (b.fatArrowAt = g)
				}
			}

			function l(a, b, c, d, e, f) {
				this.indented = a, this.column = b, this.type = c, this.prev = e, this.info = f, null != d && (this.align = d)
			}

			function m(a, b) {
				var c, d;
				for(c = a.localVars; c; c = c.next)
					if(c.name == b) return !0;
				for(d = a.context; d; d = d.prev)
					for(c = d.vars; c; c = c.next)
						if(c.name == b) return !0
			}

			function n(a, b, c, d, e) {
				var g, f = a.cc;
				for(Kb.state = a, Kb.stream = e, Kb.marked = null, Kb.cc = f, Kb.style = b, a.lexical.hasOwnProperty("align") || (a.lexical.align = !0);;)
					if(g = f.length ? f.pop() : Cb ? x : w, g(c, d)) {
						for(; f.length && f[f.length - 1].lex;) f.pop()();
						return Kb.marked ? Kb.marked : "variable" == c && m(a, d) ? "variable-2" : b
					}
			}

			function o() {
				for(var a = arguments.length - 1; a >= 0; a--) Kb.cc.push(arguments[a])
			}

			function p() {
				return o.apply(null, arguments), !0
			}

			function q(a) {
				function b(b) {
					for(var c = b; c; c = c.next)
						if(c.name == a) return !0;
					return !1
				}
				var c = Kb.state;
				if(Kb.marked = "def", c.context) {
					if(b(c.localVars)) return;
					c.localVars = {
						name: a,
						next: c.localVars
					}
				} else {
					if(b(c.globalVars)) return;
					d.globalVars && (c.globalVars = {
						name: a,
						next: c.globalVars
					})
				}
			}

			function r() {
				Kb.state.context = {
					prev: Kb.state.context,
					vars: Kb.state.localVars
				}, Kb.state.localVars = Lb
			}

			function s() {
				Kb.state.localVars = Kb.state.context.vars, Kb.state.context = Kb.state.context.prev
			}

			function t(a, b) {
				var c = function() {
					var e, c = Kb.state,
						d = c.indented;
					if("stat" == c.lexical.type) d = c.lexical.indented;
					else
						for(e = c.lexical; e && ")" == e.type && e.align; e = e.prev) d = e.indented;
					c.lexical = new l(d, Kb.stream.column(), a, null, c.lexical, b)
				};
				return c.lex = !0, c
			}

			function u() {
				var a = Kb.state;
				a.lexical.prev && (")" == a.lexical.type && (a.indented = a.lexical.indented), a.lexical = a.lexical.prev)
			}

			function v(a) {
				function b(c) {
					return c == a ? p() : ";" == a ? o() : p(b)
				}
				return b
			}

			function w(a, b) {
				return "var" == a ? p(t("vardef", b.length), $, v(";"), u) : "keyword a" == a ? p(t("form"), z, w, u) : "keyword b" == a ? p(t("form"), w, u) : "{" == a ? p(t("}"), T, u) : ";" == a ? p() : "if" == a ? ("else" == Kb.state.lexical.info && Kb.state.cc[Kb.state.cc.length - 1] == u && Kb.state.cc.pop()(), p(t("form"), z, w, u, db)) : "function" == a ? p(jb) : "for" == a ? p(t("form"), eb, w, u) : "variable" == a ? Db && "type" == b ? (Kb.marked = "keyword", p(V, v("operator"), V, v(";"))) : p(t("stat"), M) : "switch" == a ? p(t("form"), z, v("{"), t("}", "switch"), T, u, u) : "case" == a ? p(x, v(":")) : "default" == a ? p(v(":")) : "catch" == a ? p(t("form"), r, v("("), kb, v(")"), w, u, s) : "class" == a ? p(t("form"), mb, u) : "export" == a ? p(t("stat"), qb, u) : "import" == a ? p(t("stat"), sb, u) : "module" == a ? p(t("form"), _, v("{"), t("}"), T, u, u) : "async" == a ? p(w) : "@" == b ? p(x, w) : o(t("stat"), x, v(";"), u)
			}

			function x(a) {
				return A(a, !1)
			}

			function y(a) {
				return A(a, !0)
			}

			function z(a) {
				return "(" == a ? p(t(")"), x, v(")"), u) : o()
			}

			function A(a, b) {
				var c, d;
				if(Kb.state.fatArrowAt == Kb.stream.start) {
					if(c = b ? I : H, "(" == a) return p(r, t(")"), R(_, ")"), u, v("=>"), c, s);
					if("variable" == a) return o(r, _, v("=>"), c, s)
				}
				return d = b ? E : D, Jb.hasOwnProperty(a) ? p(d) : "function" == a ? p(jb, d) : "class" == a ? p(t("form"), lb, u) : "keyword c" == a || "async" == a ? p(b ? C : B) : "(" == a ? p(t(")"), B, v(")"), u, d) : "operator" == a || "spread" == a ? p(b ? y : x) : "[" == a ? p(t("]"), xb, u, d) : "{" == a ? S(O, "}", null, d) : "quasi" == a ? o(F, d) : "new" == a ? p(J(b)) : p()
			}

			function B(a) {
				return a.match(/[;\}\)\],]/) ? o() : o(x)
			}

			function C(a) {
				return a.match(/[;\}\)\],]/) ? o() : o(y)
			}

			function D(a, b) {
				return "," == a ? p(x) : E(a, b, !1)
			}

			function E(a, b, c) {
				var d = 0 == c ? D : E,
					e = 0 == c ? x : y;
				return "=>" == a ? p(r, c ? I : H, s) : "operator" == a ? /\+\+|--/.test(b) ? p(d) : "?" == b ? p(x, v(":"), e) : p(e) : "quasi" == a ? o(F, d) : ";" == a ? void 0 : "(" == a ? S(y, ")", "call", d) : "." == a ? p(N, d) : "[" == a ? p(t("]"), B, v("]"), u, d) : void 0
			}

			function F(a, b) {
				return "quasi" == a ? "${" == b.slice(b.length - 2) ? p(x, G) : p(F) : o()
			}

			function G(a) {
				return "}" == a ? (Kb.marked = "string-2", Kb.state.tokenize = j, p(F)) : void 0
			}

			function H(a) {
				return k(Kb.stream, Kb.state), o("{" == a ? w : x)
			}

			function I(a) {
				return k(Kb.stream, Kb.state), o("{" == a ? w : y)
			}

			function J(a) {
				return function(b) {
					return "." == b ? p(a ? L : K) : o(a ? y : x)
				}
			}

			function K(a, b) {
				return "target" == b ? (Kb.marked = "keyword", p(D)) : void 0
			}

			function L(a, b) {
				return "target" == b ? (Kb.marked = "keyword", p(E)) : void 0
			}

			function M(a) {
				return ":" == a ? p(u, w) : o(D, v(";"), u)
			}

			function N(a) {
				return "variable" == a ? (Kb.marked = "property", p()) : void 0
			}

			function O(a, b) {
				return "async" == a ? (Kb.marked = "property", p(O)) : "variable" == a || "keyword" == Kb.style ? (Kb.marked = "property", "get" == b || "set" == b ? p(P) : p(Q)) : "number" == a || "string" == a ? (Kb.marked = Bb ? "property" : Kb.style + " property", p(Q)) : "jsonld-keyword" == a ? p(Q) : "modifier" == a ? p(O) : "[" == a ? p(x, v("]"), Q) : "spread" == a ? p(x) : ":" == a ? o(Q) : void 0
			}

			function P(a) {
				return "variable" == a ? (Kb.marked = "property", p(jb)) : o(Q)
			}

			function Q(a) {
				return ":" == a ? p(y) : "(" == a ? o(jb) : void 0
			}

			function R(a, b, c) {
				function d(e, f) {
					if(c ? -1 < c.indexOf(e) : "," == e) {
						var g = Kb.state.lexical;
						return "call" == g.info && (g.pos = (g.pos || 0) + 1), p(function(c, d) {
							return c == b || d == b ? o() : o(a)
						}, d)
					}
					return e == b || f == b ? p() : p(v(b))
				}
				return function(c, e) {
					return c == b || e == b ? p() : o(a, d)
				}
			}

			function S(a, b, c) {
				for(var d = 3; d < arguments.length; d++) Kb.cc.push(arguments[d]);
				return p(t(b, c), R(a, b), u)
			}

			function T(a) {
				return "}" == a ? p() : o(w, T)
			}

			function U(a, b) {
				if(Db) {
					if(":" == a) return p(V);
					if("?" == b) return p(U)
				}
			}

			function V(a) {
				return "variable" == a ? (Kb.marked = "variable-3", p(Z)) : "string" == a || "number" == a || "atom" == a ? p(Z) : "{" == a ? p(t("}"), R(X, "}", ",;"), u, Z) : "(" == a ? p(R(Y, ")"), W) : void 0
			}

			function W(a) {
				return "=>" == a ? p(V) : void 0
			}

			function X(a, b) {
				return "variable" == a || "keyword" == Kb.style ? (Kb.marked = "property", p(X)) : "?" == b ? p(X) : ":" == a ? p(V) : "[" == a ? p(x, U, v("]"), X) : void 0
			}

			function Y(a) {
				return "variable" == a ? p(Y) : ":" == a ? p(V) : void 0
			}

			function Z(a, b) {
				return "<" == b ? p(t(">"), R(V, ">"), u, Z) : "|" == b || "." == a ? p(V) : "[" == a ? p(v("]"), Z) : "extends" == b ? p(V) : void 0
			}

			function $() {
				return o(_, U, bb, cb)
			}

			function _(a, b) {
				return "modifier" == a ? p(_) : "variable" == a ? (q(b), p()) : "spread" == a ? p(_) : "[" == a ? S(_, "]") : "{" == a ? S(ab, "}") : void 0
			}

			function ab(a, b) {
				return "variable" != a || Kb.stream.match(/^\s*:/, !1) ? ("variable" == a && (Kb.marked = "property"), "spread" == a ? p(_) : "}" == a ? o() : p(v(":"), _, bb)) : (q(b), p(bb))
			}

			function bb(a, b) {
				return "=" == b ? p(y) : void 0
			}

			function cb(a) {
				return "," == a ? p($) : void 0
			}

			function db(a, b) {
				return "keyword b" == a && "else" == b ? p(t("form", "else"), w, u) : void 0
			}

			function eb(a) {
				return "(" == a ? p(t(")"), fb, v(")"), u) : void 0
			}

			function fb(a) {
				return "var" == a ? p($, v(";"), hb) : ";" == a ? p(hb) : "variable" == a ? p(gb) : o(x, v(";"), hb)
			}

			function gb(a, b) {
				return "in" == b || "of" == b ? (Kb.marked = "keyword", p(x)) : p(D, hb)
			}

			function hb(a, b) {
				return ";" == a ? p(ib) : "in" == b || "of" == b ? (Kb.marked = "keyword", p(x)) : o(x, v(";"), ib)
			}

			function ib(a) {
				")" != a && p(x)
			}

			function jb(a, b) {
				return "*" == b ? (Kb.marked = "keyword", p(jb)) : "variable" == a ? (q(b), p(jb)) : "(" == a ? p(r, t(")"), R(kb, ")"), u, U, w, s) : Db && "<" == b ? p(t(">"), R(V, ">"), u, jb) : void 0
			}

			function kb(a) {
				return "spread" == a ? p(kb) : o(_, U, bb)
			}

			function lb(a, b) {
				return "variable" == a ? mb(a, b) : nb(a, b)
			}

			function mb(a, b) {
				return "variable" == a ? (q(b), p(nb)) : void 0
			}

			function nb(a, b) {
				return "<" == b ? p(t(">"), R(V, ">"), u, nb) : "extends" == b || "implements" == b || Db && "," == a ? p(Db ? V : x, nb) : "{" == a ? p(t("}"), ob, u) : void 0
			}

			function ob(a, b) {
				return "variable" == a || "keyword" == Kb.style ? ("async" == b || "static" == b || "get" == b || "set" == b || Db && ("public" == b || "private" == b || "protected" == b || "readonly" == b || "abstract" == b)) && Kb.stream.match(/^\s+[\w$\xa1-\uffff]/, !1) ? (Kb.marked = "keyword", p(ob)) : (Kb.marked = "property", p(Db ? pb : jb, ob)) : "[" == a ? p(x, v("]"), Db ? pb : jb, ob) : "*" == b ? (Kb.marked = "keyword", p(ob)) : ";" == a ? p(ob) : "}" == a ? p() : "@" == b ? p(x, ob) : void 0
			}

			function pb(a, b) {
				return "?" == b ? p(pb) : ":" == a ? p(V, bb) : "=" == b ? p(y) : o(jb)
			}

			function qb(a, b) {
				return "*" == b ? (Kb.marked = "keyword", p(wb, v(";"))) : "default" == b ? (Kb.marked = "keyword", p(x, v(";"))) : "{" == a ? p(R(rb, "}"), wb, v(";")) : o(w)
			}

			function rb(a, b) {
				return "as" == b ? (Kb.marked = "keyword", p(v("variable"))) : "variable" == a ? o(y, rb) : void 0
			}

			function sb(a) {
				return "string" == a ? p() : o(tb, ub, wb)
			}

			function tb(a, b) {
				return "{" == a ? S(tb, "}") : ("variable" == a && q(b), "*" == b && (Kb.marked = "keyword"), p(vb))
			}

			function ub(a) {
				return "," == a ? p(tb, ub) : void 0
			}

			function vb(a, b) {
				return "as" == b ? (Kb.marked = "keyword", p(tb)) : void 0
			}

			function wb(a, b) {
				return "from" == b ? (Kb.marked = "keyword", p(x)) : void 0
			}

			function xb(a) {
				return "]" == a ? p() : o(R(y, "]"))
			}

			function yb(a, b) {
				return "operator" == a.lastType || "," == a.lastType || Gb.test(b.charAt(0)) || /[,.]/.test(b.charAt(0))
			}
			var Mb, Nb, zb = c.indentUnit,
				Ab = d.statementIndent,
				Bb = d.jsonld,
				Cb = d.json || Bb,
				Db = d.typescript,
				Eb = d.wordCharacters || /[\w$\xa1-\uffff]/,
				Fb = function() {
					function a(a) {
						return {
							type: a,
							style: "keyword"
						}
					}
					var h, i, j, b = a("keyword a"),
						c = a("keyword b"),
						d = a("keyword c"),
						e = a("operator"),
						f = {
							type: "atom",
							style: "atom"
						},
						g = {
							"if": a("if"),
							"while": b,
							"with": b,
							"else": c,
							"do": c,
							"try": c,
							"finally": c,
							"return": d,
							"break": d,
							"continue": d,
							"new": a("new"),
							"delete": d,
							"throw": d,
							"debugger": d,
							"var": a("var"),
							"const": a("var"),
							let: a("var"),
							"function": a("function"),
							"catch": a("catch"),
							"for": a("for"),
							"switch": a("switch"),
							"case": a("case"),
							"default": a("default"),
							"in": e,
							"typeof": e,
							"instanceof": e,
							"true": f,
							"false": f,
							"null": f,
							undefined: f,
							NaN: f,
							Infinity: f,
							"this": a("this"),
							"class": a("class"),
							"super": a("atom"),
							yield: d,
							"export": a("export"),
							"import": a("import"),
							"extends": d,
							await: d,
							async: a("async")
						};
					if(Db) {
						h = {
							type: "variable",
							style: "variable-3"
						}, i = {
							"interface": a("class"),
							"implements": d,
							namespace: d,
							module: a("module"),
							"enum": a("module"),
							"public": a("modifier"),
							"private": a("modifier"),
							"protected": a("modifier"),
							"abstract": a("modifier"),
							as: e,
							string: h,
							number: h,
							"boolean": h,
							any: h
						};
						for(j in i) g[j] = i[j]
					}
					return g
				}(),
				Gb = /[+\-*&%=<>!?|~^@]/,
				Hb = /^@(context|id|value|language|type|container|list|set|reverse|index|base|vocab|graph)"/,
				Ib = "([{}])",
				Jb = {
					atom: !0,
					number: !0,
					variable: !0,
					string: !0,
					regexp: !0,
					"this": !0,
					"jsonld-keyword": !0
				},
				Kb = {
					state: null,
					column: null,
					marked: null,
					cc: null
				},
				Lb = {
					name: "this",
					next: {
						name: "arguments"
					}
				};
			return u.lex = !0, {
				startState: function(a) {
					var b = {
						tokenize: g,
						lastType: "sof",
						cc: [],
						lexical: new l((a || 0) - zb, 0, "block", !1),
						localVars: d.localVars,
						context: d.localVars && {
							vars: d.localVars
						},
						indented: a || 0
					};
					return d.globalVars && "object" == typeof d.globalVars && (b.globalVars = d.globalVars), b
				},
				token: function(a, b) {
					if(a.sol() && (!b.lexical.hasOwnProperty("align") && (b.lexical.align = !1), b.indented = a.indentation(), k(a, b)), b.tokenize != i && a.eatSpace()) return null;
					var c = b.tokenize(a, b);
					return "comment" == Mb ? c : (b.lastType = "operator" != Mb || "++" != Nb && "--" != Nb ? Mb : "incdec", n(b, c, Mb, Nb, a))
				},
				indent: function(b, c) {
					var h, e, f, k, j, l, m;
					if(b.tokenize == i) return a.Pass;
					if(b.tokenize != g) return 0;
					if(e = c && c.charAt(0), f = b.lexical, !/^\s*else\b/.test(c))
						for(j = b.cc.length - 1; j >= 0; --j)
							if(k = b.cc[j], k == u) f = f.prev;
							else if(k != db) break;
					for(; !("stat" != f.type && "form" != f.type || "}" != e && (!(h = b.cc[b.cc.length - 1]) || h != D && h != E || /^[,\.=+\-*:?[\(]/.test(c)));) f = f.prev;
					return Ab && ")" == f.type && "stat" == f.prev.type && (f = f.prev), l = f.type, m = e == l, "vardef" == l ? f.indented + ("operator" == b.lastType || "," == b.lastType ? f.info + 1 : 0) : "form" == l && "{" == e ? f.indented : "form" == l ? f.indented + zb : "stat" == l ? f.indented + (yb(b, c) ? Ab || zb : 0) : "switch" != f.info || m || 0 == d.doubleIndentSwitch ? f.align ? f.column + (m ? 0 : 1) : f.indented + (m ? 0 : zb) : f.indented + (/^(?:case|default)\b/.test(c) ? zb : 2 * zb)
				},
				electricInput: /^\s*(?:case .*?:|default:|\{|\})$/,
				blockCommentStart: Cb ? null : "/*",
				blockCommentEnd: Cb ? null : "*/",
				lineComment: Cb ? null : "//",
				fold: "brace",
				closeBrackets: "()[]{}''\"\"``",
				helperType: Cb ? "json" : "javascript",
				jsonldMode: Bb,
				jsonMode: Cb,
				expressionAllowed: b,
				skipExpression: function(a) {
					var b = a.cc[a.cc.length - 1];
					(b == x || b == y) && a.cc.pop()
				}
			}
		}), a.registerHelper("wordChars", "javascript", /[\w$]/), a.defineMIME("text/javascript", "javascript"), a.defineMIME("text/ecmascript", "javascript"), a.defineMIME("application/javascript", "javascript"), a.defineMIME("application/x-javascript", "javascript"), a.defineMIME("application/ecmascript", "javascript"), a.defineMIME("application/json", {
			name: "javascript",
			json: !0
		}), a.defineMIME("application/x-json", {
			name: "javascript",
			json: !0
		}), a.defineMIME("application/ld+json", {
			name: "javascript",
			jsonld: !0
		}), a.defineMIME("text/typescript", {
			name: "javascript",
			typescript: !0
		}), a.defineMIME("application/typescript", {
			name: "javascript",
			typescript: !0
		})
	})
}, function(a, b, c) {
	c(141), a.exports = c(25).RegExp.escape
}, function(a, b, c) {
	var d = c(4),
		e = c(70),
		f = c(5)("species");
	a.exports = function(a) {
		var b;
		return e(a) && (b = a.constructor, "function" == typeof b && (b === Array || e(b.prototype)) && (b = void 0), d(b) && (b = b[f], null === b && (b = void 0))), void 0 === b ? Array : b
	}
}, function(a, b, c) {
	var d = c(133);
	a.exports = function(a, b) {
		return new(d(a))(b)
	}
}, function(a, b, c) {
	"use strict";
	var d = c(1),
		e = c(24),
		f = "number";
	a.exports = function(a) {
		if("string" !== a && a !== f && "default" !== a) throw TypeError("Incorrect hint");
		return e(d(this), a != f)
	}
}, function(a, b, c) {
	var d = c(36),
		e = c(57),
		f = c(48);
	a.exports = function(a) {
		var j, g, h, i, b = d(a),
			c = e.f;
		if(c)
			for(g = c(a), h = f.f, i = 0; g.length > i;) h.call(a, j = g[i++]) && b.push(j);
		return b
	}
}, function(a, b, c) {
	var d = c(36),
		e = c(15);
	a.exports = function(a, b) {
		for(var i, c = e(a), f = d(c), g = f.length, h = 0; g > h;)
			if(c[i = f[h++]] === b) return i
	}
}, function(a, b, c) {
	"use strict";
	var d = c(139),
		e = c(53),
		f = c(11);
	a.exports = function() {
		for(var a = f(this), b = arguments.length, c = Array(b), g = 0, h = d._, i = !1; b > g;)(c[g] = arguments[g++]) === h && (i = !0);
		return function() {
			var k, d = this,
				f = arguments.length,
				g = 0,
				j = 0;
			if(!i && !f) return e(a, c, d);
			if(k = c.slice(), i)
				for(; b > g; g++) k[g] === h && (k[g] = arguments[j++]);
			for(; f > j;) k.push(arguments[j++]);
			return e(a, k, d)
		}
	}
}, function(a, b, c) {
	a.exports = c(2)
}, function(a) {
	a.exports = function(a, b) {
		var c = b === Object(b) ? function(a) {
			return b[a]
		} : b;
		return function(b) {
			return(b + "").replace(a, c)
		}
	}
}, function(a, b, c) {
	var d = c(0),
		e = c(140)(/[\\^$*+?.()|[\]{}]/g, "\\$&");
	d(d.S, "RegExp", {
		escape: function(a) {
			return e(a)
		}
	})
}, function(a, b, c) {
	var d = c(0);
	d(d.P, "Array", {
		copyWithin: c(91)
	}), c(41)("copyWithin")
}, function(a, b, c) {
	"use strict";
	var d = c(0),
		e = c(22)(4);
	d(d.P + d.F * !c(21)([].every, !0), "Array", {
		every: function(a) {
			return e(this, a, arguments[1])
		}
	})
}, function(a, b, c) {
	var d = c(0);
	d(d.P, "Array", {
		fill: c(62)
	}), c(41)("fill")
}, function(a, b, c) {
	"use strict";
	var d = c(0),
		e = c(22)(2);
	d(d.P + d.F * !c(21)([].filter, !0), "Array", {
		filter: function(a) {
			return e(this, a, arguments[1])
		}
	})
}, function(a, b, c) {
	"use strict";
	var d = c(0),
		e = c(22)(6),
		f = "findIndex",
		g = !0;
	f in [] && [][f](function() {
		g = !1
	}), d(d.P + d.F * g, "Array", {
		findIndex: function(a) {
			return e(this, a, 1 < arguments.length ? arguments[1] : void 0)
		}
	}), c(41)(f)
}, function(a, b, c) {
	"use strict";
	var d = c(0),
		e = c(22)(5),
		f = "find",
		g = !0;
	f in [] && [][f](function() {
		g = !1
	}), d(d.P + d.F * g, "Array", {
		find: function(a) {
			return e(this, a, 1 < arguments.length ? arguments[1] : void 0)
		}
	}), c(41)(f)
}, function(a, b, c) {
	"use strict";
	var d = c(0),
		e = c(22)(0),
		f = c(21)([].forEach, !0);
	d(d.P + d.F * !f, "Array", {
		forEach: function(a) {
			return e(this, a, arguments[1])
		}
	})
}, function(a, b, c) {
	"use strict";
	var d = c(26),
		e = c(0),
		f = c(9),
		g = c(100),
		h = c(69),
		i = c(8),
		j = c(63),
		k = c(86);
	e(e.S + e.F * !c(55)(function(a) {
		Array.from(a)
	}), "Array", {
		from: function(a) {
			var p, q, r, s, b = f(a),
				c = "function" == typeof this ? this : Array,
				e = arguments.length,
				l = e > 1 ? arguments[1] : void 0,
				m = void 0 !== l,
				n = 0,
				o = k(b);
			if(m && (l = d(l, e > 2 ? arguments[2] : void 0, 2)), void 0 == o || c == Array && h(o))
				for(p = i(b.length), q = new c(p); p > n; n++) j(q, n, m ? l(b[n], n) : b[n]);
			else
				for(s = o.call(b), q = new c; !(r = s.next()).done; n++) j(q, n, m ? g(s, l, [r.value, n], !0) : r.value);
			return q.length = n, q
		}
	})
}, function(a, b, c) {
	"use strict";
	var d = c(0),
		e = c(49)(!1),
		f = [].indexOf,
		g = !!f && 0 > 1 / [1].indexOf(1, -0);
	d(d.P + d.F * (g || !c(21)(f)), "Array", {
		indexOf: function(a) {
			return g ? f.apply(this, arguments) || 0 : e(this, a, arguments[1])
		}
	})
}, function(a, b, c) {
	var d = c(0);
	d(d.S, "Array", {
		isArray: c(70)
	})
}, function(a, b, c) {
	"use strict";
	var d = c(0),
		e = c(15),
		f = [].join;
	d(d.P + d.F * (c(47) != Object || !c(21)(f)), "Array", {
		join: function(a) {
			return f.call(e(this), void 0 === a ? "," : a)
		}
	})
}, function(a, b, c) {
	"use strict";
	var d = c(0),
		e = c(15),
		f = c(31),
		g = c(8),
		h = [].lastIndexOf,
		i = !!h && 0 > 1 / [1].lastIndexOf(1, -0);
	d(d.P + d.F * (i || !c(21)(h)), "Array", {
		lastIndexOf: function(a) {
			if(i) return h.apply(this, arguments) || 0;
			var b = e(this),
				c = g(b.length),
				d = c - 1;
			for(1 < arguments.length && (d = Math.min(d, f(arguments[1]))), 0 > d && (d = c + d); d >= 0; d--)
				if(d in b && b[d] === a) return d || 0;
			return -1
		}
	})
}, function(a, b, c) {
	"use strict";
	var d = c(0),
		e = c(22)(1);
	d(d.P + d.F * !c(21)([].map, !0), "Array", {
		map: function(a) {
			return e(this, a, arguments[1])
		}
	})
}, function(a, b, c) {
	"use strict";
	var d = c(0),
		e = c(63);
	d(d.S + d.F * c(3)(function() {
		function a() {}
		return !(Array.of.call(a) instanceof a)
	}), "Array", { of: function() {
			for(var a = 0, b = arguments.length, c = new("function" == typeof this ? this : Array)(b); b > a;) e(c, a, arguments[a++]);
			return c.length = b, c
		}
	})
}, function(a, b, c) {
	"use strict";
	var d = c(0),
		e = c(93);
	d(d.P + d.F * !c(21)([].reduceRight, !0), "Array", {
		reduceRight: function(a) {
			return e(this, a, arguments.length, arguments[1], !0)
		}
	})
}, function(a, b, c) {
	"use strict";
	var d = c(0),
		e = c(93);
	d(d.P + d.F * !c(21)([].reduce, !0), "Array", {
		reduce: function(a) {
			return e(this, a, arguments.length, arguments[1], !1)
		}
	})
}, function(a, b, c) {
	"use strict";
	var d = c(0),
		e = c(67),
		f = c(19),
		g = c(39),
		h = c(8),
		i = [].slice;
	d(d.P + d.F * c(3)(function() {
		e && i.call(e)
	}), "Array", {
		slice: function(a, b) {
			var e, j, k, l, m, c = h(this.length),
				d = f(this);
			if(b = void 0 === b ? c : b, "Array" == d) return i.call(this, a, b);
			for(e = g(a, c), j = g(b, c), k = h(j - e), l = Array(k), m = 0; k > m; m++) l[m] = "String" == d ? this.charAt(e + m) : this[e + m];
			return l
		}
	})
}, function(a, b, c) {
	"use strict";
	var d = c(0),
		e = c(22)(3);
	d(d.P + d.F * !c(21)([].some, !0), "Array", {
		some: function(a) {
			return e(this, a, arguments[1])
		}
	})
}, function(a, b, c) {
	"use strict";
	var d = c(0),
		e = c(11),
		f = c(9),
		g = c(3),
		h = [].sort,
		i = [1, 2, 3];
	d(d.P + d.F * (g(function() {
		i.sort(void 0)
	}) || !g(function() {
		i.sort(null)
	}) || !c(21)(h)), "Array", {
		sort: function(a) {
			return void 0 === a ? h.call(f(this)) : h.call(f(this), e(a))
		}
	})
}, function(a, b, c) {
	c(38)("Array")
}, function(a, b, c) {
	var d = c(0);
	d(d.S, "Date", {
		now: function() {
			return(new Date).getTime()
		}
	})
}, function(a, b, c) {
	"use strict";
	var d = c(0),
		e = c(3),
		f = Date.prototype.getTime,
		g = function(a) {
			return a > 9 ? a : "0" + a
		};
	d(d.P + d.F * (e(function() {
		return "0385-07-25T07:06:39.999Z" != new Date(-50000000000001).toISOString()
	}) || !e(function() {
		new Date(0 / 0).toISOString()
	})), "Date", {
		toISOString: function() {
			if(!isFinite(f.call(this))) throw RangeError("Invalid time value");
			var a = this,
				b = a.getUTCFullYear(),
				c = a.getUTCMilliseconds(),
				d = 0 > b ? "-" : b > 9999 ? "+" : "";
			return d + ("00000" + Math.abs(b)).slice(d ? -6 : -4) + "-" + g(a.getUTCMonth() + 1) + "-" + g(a.getUTCDate()) + "T" + g(a.getUTCHours()) + ":" + g(a.getUTCMinutes()) + ":" + g(a.getUTCSeconds()) + "." + (c > 99 ? c : "0" + g(c)) + "Z"
		}
	})
}, function(a, b, c) {
	"use strict";
	var d = c(0),
		e = c(9),
		f = c(24);
	d(d.P + d.F * c(3)(function() {
		return null !== new Date(0 / 0).toJSON() || 1 !== Date.prototype.toJSON.call({
			toISOString: function() {
				return 1
			}
		})
	}), "Date", {
		toJSON: function() {
			var a = e(this),
				b = f(a);
			return "number" != typeof b || isFinite(b) ? a.toISOString() : null
		}
	})
}, function(a, b, c) {
	var d = c(5)("toPrimitive"),
		e = Date.prototype;
	d in e || c(12)(e, d, c(135))
}, function(a, b, c) {
	var d = Date.prototype,
		e = "Invalid Date",
		f = "toString",
		g = d[f],
		h = d.getTime;
	new Date(0 / 0) + "" != e && c(13)(d, f, function() {
		var a = h.call(this);
		return a === a ? g.call(this) : e
	})
}, function(a, b, c) {
	var d = c(0);
	d(d.P, "Function", {
		bind: c(94)
	})
}, function(a, b, c) {
	"use strict";
	var d = c(4),
		e = c(17),
		f = c(5)("hasInstance"),
		g = Function.prototype;
	f in g || c(7).f(g, f, {
		value: function(a) {
			if("function" != typeof this || !d(a)) return !1;
			if(!d(this.prototype)) return a instanceof this;
			for(; a = e(a);)
				if(this.prototype === a) return !0;
			return !1
		}
	})
}, function(a, b, c) {
	var d = c(7).f,
		e = c(30),
		f = c(10),
		g = Function.prototype,
		h = /^\s*function ([^ (]*)/,
		i = "name",
		j = Object.isExtensible || function() {
			return !0
		};
	i in g || c(6) && d(g, i, {
		configurable: !0,
		get: function() {
			try {
				var a = this,
					b = ("" + a).match(h)[1];
				return f(a, i) || !j(a) || d(a, i, e(5, b)), b
			} catch(b) {
				return ""
			}
		}
	})
}, function(a, b, c) {
	var d = c(0),
		e = c(102),
		f = Math.sqrt,
		g = Math.acosh;
	d(d.S + d.F * !(g && 710 == Math.floor(g(Number.MAX_VALUE)) && 1 / 0 == g(1 / 0)), "Math", {
		acosh: function(a) {
			return 1 > (a = +a) ? 0 / 0 : a > 94906265.62425156 ? Math.log(a) + Math.LN2 : e(a - 1 + f(a - 1) * f(a + 1))
		}
	})
}, function(a, b, c) {
	function d(a) {
		return isFinite(a = +a) && 0 != a ? 0 > a ? -d(-a) : Math.log(a + Math.sqrt(a * a + 1)) : a
	}
	var e = c(0),
		f = Math.asinh;
	e(e.S + e.F * !(f && 0 < 1 / f(0)), "Math", {
		asinh: d
	})
}, function(a, b, c) {
	var d = c(0),
		e = Math.atanh;
	d(d.S + d.F * !(e && 0 > 1 / e(-0)), "Math", {
		atanh: function(a) {
			return 0 == (a = +a) ? a : Math.log((1 + a) / (1 - a)) / 2
		}
	})
}, function(a, b, c) {
	var d = c(0),
		e = c(74);
	d(d.S, "Math", {
		cbrt: function(a) {
			return e(a = +a) * Math.pow(Math.abs(a), 1 / 3)
		}
	})
}, function(a, b, c) {
	var d = c(0);
	d(d.S, "Math", {
		clz32: function(a) {
			return(a >>>= 0) ? 31 - Math.floor(Math.log(a + .5) * Math.LOG2E) : 32
		}
	})
}, function(a, b, c) {
	var d = c(0),
		e = Math.exp;
	d(d.S, "Math", {
		cosh: function(a) {
			return(e(a = +a) + e(-a)) / 2
		}
	})
}, function(a, b, c) {
	var d = c(0),
		e = c(73);
	d(d.S + d.F * (e != Math.expm1), "Math", {
		expm1: e
	})
}, function(a, b, c) {
	var d = c(0),
		e = c(74),
		f = Math.pow,
		g = f(2, -52),
		h = f(2, -23),
		i = f(2, 127) * (2 - h),
		j = f(2, -126),
		k = function(a) {
			return a + 1 / g - 1 / g
		};
	d(d.S, "Math", {
		fround: function(a) {
			var d, f, b = Math.abs(a),
				c = e(a);
			return j > b ? c * k(b / j / h) * j * h : (d = (1 + h / g) * b, f = d - (d - b), f > i || f != f ? 1 / 0 * c : c * f)
		}
	})
}, function(a, b, c) {
	var d = c(0),
		e = Math.abs;
	d(d.S, "Math", {
		hypot: function() {
			for(var f, g, a = 0, b = 0, c = arguments.length, d = 0; c > b;) f = e(arguments[b++]), f > d ? (g = d / f, a = a * g * g + 1, d = f) : f > 0 ? (g = f / d, a += g * g) : a += f;
			return 1 / 0 == d ? 1 / 0 : d * Math.sqrt(a)
		}
	})
}, function(a, b, c) {
	var d = c(0),
		e = Math.imul;
	d(d.S + d.F * c(3)(function() {
		return -5 != e(4294967295, 5) || 2 != e.length
	}), "Math", {
		imul: function(a, b) {
			var c = 65535,
				d = +a,
				e = +b,
				f = c & d,
				g = c & e;
			return 0 | f * g + ((c & d >>> 16) * g + f * (c & e >>> 16) << 16 >>> 0)
		}
	})
}, function(a, b, c) {
	var d = c(0);
	d(d.S, "Math", {
		log10: function(a) {
			return Math.log(a) / Math.LN10
		}
	})
}, function(a, b, c) {
	var d = c(0);
	d(d.S, "Math", {
		log1p: c(102)
	})
}, function(a, b, c) {
	var d = c(0);
	d(d.S, "Math", {
		log2: function(a) {
			return Math.log(a) / Math.LN2
		}
	})
}, function(a, b, c) {
	var d = c(0);
	d(d.S, "Math", {
		sign: c(74)
	})
}, function(a, b, c) {
	var d = c(0),
		e = c(73),
		f = Math.exp;
	d(d.S + d.F * c(3)(function() {
		return !0
	}), "Math", {
		sinh: function(a) {
			return 1 > Math.abs(a = +a) ? (e(a) - e(-a)) / 2 : (f(a - 1) - f(-a - 1)) * (Math.E / 2)
		}
	})
}, function(a, b, c) {
	var d = c(0),
		e = c(73),
		f = Math.exp;
	d(d.S, "Math", {
		tanh: function(a) {
			var b = e(a = +a),
				c = e(-a);
			return 1 / 0 == b ? 1 : 1 / 0 == c ? -1 : (b - c) / (f(a) + f(-a))
		}
	})
}, function(a, b, c) {
	var d = c(0);
	d(d.S, "Math", {
		trunc: function(a) {
			return(a > 0 ? Math.floor : Math.ceil)(a)
		}
	})
}, function(a, b, c) {
	"use strict";
	var w, u, v, d = c(2),
		e = c(10),
		f = c(19),
		g = c(68),
		h = c(24),
		i = c(3),
		j = c(35).f,
		k = c(16).f,
		l = c(7).f,
		m = c(45).trim,
		n = "Number",
		o = d[n],
		p = o,
		q = o.prototype,
		r = f(c(34)(q)) == n,
		s = "trim" in String.prototype,
		t = function(a) {
			var d, e, f, c, k, g, i, j, b = h(a, !1);
			if("string" == typeof b && 2 < b.length)
				if(b = s ? b.trim() : m(b, 3), c = b.charCodeAt(0), 43 === c || 45 === c) {
					if(d = b.charCodeAt(2), 88 === d || 120 === d) return 0 / 0
				} else if(48 === c) {
				switch(b.charCodeAt(1)) {
					case 66:
					case 98:
						e = 2, f = 49;
						break;
					case 79:
					case 111:
						e = 8, f = 55;
						break;
					default:
						return +b
				}
				for(g = b.slice(2), i = 0, j = g.length; j > i; i++)
					if(k = g.charCodeAt(i), 48 > k || k > f) return 0 / 0;
				return parseInt(g, e)
			}
			return +b
		};
	if(!o(" 0o1") || !o("0b1") || o("+0x1")) {
		for(o = function(a) {
				var b = 1 > arguments.length ? 0 : a,
					c = this;
				return c instanceof o && (r ? i(function() {
					q.valueOf.call(c)
				}) : f(c) != n) ? g(new p(t(b)), c, o) : t(b)
			}, u = c(6) ? j(p) : "MAX_VALUE,MIN_VALUE,NaN,NEGATIVE_INFINITY,POSITIVE_INFINITY,EPSILON,isFinite,isInteger,isNaN,isSafeInteger,MAX_SAFE_INTEGER,MIN_SAFE_INTEGER,parseFloat,parseInt,isInteger".split(","), v = 0; u.length > v; v++) e(p, w = u[v]) && !e(o, w) && l(o, w, k(p, w));
		o.prototype = q, q.constructor = o, c(13)(d, n, o)
	}
}, function(a, b, c) {
	var d = c(0);
	d(d.S, "Number", {
		EPSILON: 2.220446049250313e-16
	})
}, function(a, b, c) {
	var d = c(0),
		e = c(2).isFinite;
	d(d.S, "Number", {
		isFinite: function(a) {
			return "number" == typeof a && e(a)
		}
	})
}, function(a, b, c) {
	var d = c(0);
	d(d.S, "Number", {
		isInteger: c(99)
	})
}, function(a, b, c) {
	var d = c(0);
	d(d.S, "Number", {
		isNaN: function(a) {
			return a != a
		}
	})
}, function(a, b, c) {
	var d = c(0),
		e = c(99),
		f = Math.abs;
	d(d.S, "Number", {
		isSafeInteger: function(a) {
			return e(a) && 9007199254740991 >= f(a)
		}
	})
}, function(a, b, c) {
	var d = c(0);
	d(d.S, "Number", {
		MAX_SAFE_INTEGER: 9007199254740991
	})
}, function(a, b, c) {
	var d = c(0);
	d(d.S, "Number", {
		MIN_SAFE_INTEGER: -9007199254740991
	})
}, function(a, b, c) {
	var d = c(0),
		e = c(109);
	d(d.S + d.F * (Number.parseFloat != e), "Number", {
		parseFloat: e
	})
}, function(a, b, c) {
	var d = c(0),
		e = c(110);
	d(d.S + d.F * (Number.parseInt != e), "Number", {
		parseInt: e
	})
}, function(a, b, c) {
	"use strict";
	var d = c(0),
		e = c(31),
		f = c(90),
		g = c(81),
		h = 1..toFixed,
		i = Math.floor,
		j = [0, 0, 0, 0, 0, 0],
		k = "Number.toFixed: incorrect invocation!",
		l = "0",
		m = function(a, b) {
			for(var c = -1, d = b; 6 > ++c;) d += a * j[c], j[c] = d % 1e7, d = i(d / 1e7)
		},
		n = function(a) {
			for(var b = 6, c = 0; 0 <= --b;) c += j[b], j[b] = i(c / a), c = 1e7 * (c % a)
		},
		o = function() {
			var a, b, c;
			for(a = 6, b = ""; 0 <= --a;)("" != b || 0 == a || 0 !== j[a]) && (c = j[a] + "", b = "" == b ? c : b + g.call(l, 7 - c.length) + c);
			return b
		},
		p = function(a, b, c) {
			return 0 === b ? c : 1 == b % 2 ? p(a, b - 1, c * a) : p(a * a, b / 2, c)
		},
		q = function(a) {
			for(var b = 0, c = a; c >= 4096;) b += 12, c /= 4096;
			for(; c >= 2;) b += 1, c /= 2;
			return b
		};
	d(d.P + d.F * ("0.000" !== 8e-5.toFixed(3) || "1" !== .9.toFixed(0) || "1.25" !== 1.255.toFixed(2) || "1000000000000000128" !== 0xde0b6b3a7640080.toFixed(0) || !c(3)(function() {
		h.call({})
	})), "Number", {
		toFixed: function(a) {
			var i, j, r, s, b = f(this, k),
				c = e(a),
				d = "",
				h = l;
			if(0 > c || c > 20) throw RangeError(k);
			if(b != b) return "NaN";
			if(-1e21 >= b || b >= 1e21) return b + "";
			if(0 > b && (d = "-", b = -b), b > 1e-21)
				if(i = q(b * p(2, 69, 1)) - 69, j = 0 > i ? b * p(2, -i, 1) : b / p(2, i, 1), j *= 4503599627370496, i = 52 - i, i > 0) {
					for(m(0, j), r = c; r >= 7;) m(1e7, 0), r -= 7;
					for(m(p(10, r, 1), 0), r = i - 1; r >= 23;) n(8388608), r -= 23;
					n(1 << r), m(1, 1), n(2), h = o()
				} else m(0, j), m(1 << -i, 0), h = o() + g.call(l, c);
			return c > 0 ? (s = h.length, h = d + (c >= s ? "0." + g.call(l, c - s) + h : h.slice(0, s - c) + "." + h.slice(s - c))) : h = d + h, h
		}
	})
}, function(a, b, c) {
	"use strict";
	var d = c(0),
		e = c(3),
		f = c(90),
		g = 1..toPrecision;
	d(d.P + d.F * (e(function() {
		return "1" !== g.call(1, void 0)
	}) || !e(function() {
		g.call({})
	})), "Number", {
		toPrecision: function(a) {
			var b = f(this, "Number#toPrecision: incorrect invocation!");
			return void 0 === a ? g.call(b) : g.call(b, a)
		}
	})
}, function(a, b, c) {
	var d = c(0);
	d(d.S + d.F, "Object", {
		assign: c(103)
	})
}, function(a, b, c) {
	var d = c(0);
	d(d.S, "Object", {
		create: c(34)
	})
}, function(a, b, c) {
	var d = c(0);
	d(d.S + d.F * !c(6), "Object", {
		defineProperties: c(104)
	})
}, function(a, b, c) {
	var d = c(0);
	d(d.S + d.F * !c(6), "Object", {
		defineProperty: c(7).f
	})
}, function(a, b, c) {
	var d = c(4),
		e = c(29).onFreeze;
	c(23)("freeze", function(a) {
		return function(b) {
			return a && d(b) ? a(e(b)) : b
		}
	})
}, function(a, b, c) {
	var d = c(15),
		e = c(16).f;
	c(23)("getOwnPropertyDescriptor", function() {
		return function(a, b) {
			return e(d(a), b)
		}
	})
}, function(a, b, c) {
	c(23)("getOwnPropertyNames", function() {
		return c(105).f
	})
}, function(a, b, c) {
	var d = c(9),
		e = c(17);
	c(23)("getPrototypeOf", function() {
		return function(a) {
			return e(d(a))
		}
	})
}, function(a, b, c) {
	var d = c(4);
	c(23)("isExtensible", function(a) {
		return function(b) {
			return !!d(b) && (!a || a(b))
		}
	})
}, function(a, b, c) {
	var d = c(4);
	c(23)("isFrozen", function(a) {
		return function(b) {
			return !d(b) || !!a && a(b)
		}
	})
}, function(a, b, c) {
	var d = c(4);
	c(23)("isSealed", function(a) {
		return function(b) {
			return !d(b) || !!a && a(b)
		}
	})
}, function(a, b, c) {
	var d = c(0);
	d(d.S, "Object", {
		is: c(111)
	})
}, function(a, b, c) {
	var d = c(9),
		e = c(36);
	c(23)("keys", function() {
		return function(a) {
			return e(d(a))
		}
	})
}, function(a, b, c) {
	var d = c(4),
		e = c(29).onFreeze;
	c(23)("preventExtensions", function(a) {
		return function(b) {
			return a && d(b) ? a(e(b)) : b
		}
	})
}, function(a, b, c) {
	var d = c(4),
		e = c(29).onFreeze;
	c(23)("seal", function(a) {
		return function(b) {
			return a && d(b) ? a(e(b)) : b
		}
	})
}, function(a, b, c) {
	var d = c(0);
	d(d.S, "Object", {
		setPrototypeOf: c(76).set
	})
}, function(a, b, c) {
	"use strict";
	var d = c(46);
	({})[c(5)("toStringTag")] = "z", c(13)(Object.prototype, "toString", function() {
		return "[object " + d(this) + "]"
	}, !0)
}, function(a, b, c) {
	var d = c(0),
		e = c(109);
	d(d.G + d.F * (parseFloat != e), {
		parseFloat: e
	})
}, function(a, b, c) {
	var d = c(0),
		e = c(110);
	d(d.G + d.F * (parseInt != e), {
		parseInt: e
	})
}, function(a, b, c) {
	"use strict";
	var H, I, J, d = c(33),
		e = c(2),
		f = c(26),
		g = c(46),
		h = c(0),
		i = c(4),
		j = c(11),
		k = c(32),
		l = c(42),
		m = c(78),
		n = c(83).set,
		o = c(75)(),
		p = "Promise",
		q = e.TypeError,
		r = e.process,
		s = e[p],
		r = e.process,
		t = "process" == g(r),
		u = function() {},
		v = !! function() {
			try {
				var a = s.resolve(1),
					b = (a.constructor = {})[c(5)("species")] = function(a) {
						a(u, u)
					};
				return(t || "function" == typeof PromiseRejectionEvent) && a.then(u) instanceof b
			} catch(b) {}
		}(),
		w = function(a, b) {
			return a === b || a === s && b === J
		},
		x = function(a) {
			var b;
			return i(a) && "function" == typeof(b = a.then) && b
		},
		y = function(a) {
			return w(s, a) ? new z(a) : new I(a)
		},
		z = I = function(a) {
			var b, c;
			this.promise = new a(function(a, d) {
				if(void 0 != b || void 0 != c) throw q("Bad Promise constructor");
				b = a, c = d
			}), this.resolve = j(b), this.reject = j(c)
		},
		A = function(a) {
			try {
				a()
			} catch(b) {
				return {
					error: b
				}
			}
		},
		B = function(a, b) {
			if(!a._n) {
				a._n = !0;
				var c = a._c;
				o(function() {
					for(var d = a._v, e = 1 == a._s, f = 0, g = function(b) {
							var i, j, c = e ? b.ok : b.fail,
								f = b.resolve,
								g = b.reject,
								h = b.domain;
							try {
								c ? (!e && (2 == a._h && E(a), a._h = 1), !0 === c ? i = d : (h && h.enter(), i = c(d), h && h.exit()), i === b.promise ? g(q("Promise-chain cycle")) : (j = x(i)) ? j.call(i, f, g) : f(i)) : g(d)
							} catch(b) {
								g(b)
							}
						}; c.length > f;) g(c[f++]);
					a._c = [], a._n = !1, b && !a._h && C(a)
				})
			}
		},
		C = function(a) {
			n.call(e, function() {
				var c, d, f, b = a._v;
				if(D(a) && (c = A(function() {
						t ? r.emit("unhandledRejection", b, a) : (d = e.onunhandledrejection) ? d({
							promise: a,
							reason: b
						}) : (f = e.console) && f.error && f.error("Unhandled promise rejection", b)
					}), a._h = t || D(a) ? 2 : 1), a._a = void 0, c) throw c.error
			})
		},
		D = function(a) {
			if(1 == a._h) return !1;
			for(var d, b = a._a || a._c, c = 0; b.length > c;)
				if(d = b[c++], d.fail || !D(d.promise)) return !1;
			return !0
		},
		E = function(a) {
			n.call(e, function() {
				var b;
				t ? r.emit("rejectionHandled", a) : (b = e.onrejectionhandled) && b({
					promise: a,
					reason: a._v
				})
			})
		},
		F = function(a) {
			var b = this;
			b._d || (b._d = !0, b = b._w || b, b._v = a, b._s = 2, !b._a && (b._a = b._c.slice()), B(b, !0))
		},
		G = function(a) {
			var c, b = this;
			if(!b._d) {
				b._d = !0, b = b._w || b;
				try {
					if(b === a) throw q("Promise can't be resolved itself");
					(c = x(a)) ? o(function() {
						var b = {
							_w: d,
							_d: !1
						};
						try {
							c.call(a, f(G, b, 1), f(F, b, 1))
						} catch(d) {
							F.call(b, d)
						}
					}): (b._v = a, b._s = 1, B(b, !1))
				} catch(c) {
					F.call({
						_w: b,
						_d: !1
					}, c)
				}
			}
		};
	v || (s = function(a) {
		k(this, s, p, "_h"), j(a), H.call(this);
		try {
			a(f(G, this, 1), f(F, this, 1))
		} catch(a) {
			F.call(this, a)
		}
	}, H = function() {
		this._c = [], this._a = void 0, this._s = 0, this._d = !1, this._v = void 0, this._h = 0, this._n = !1
	}, H.prototype = c(37)(s.prototype, {
		then: function(a, b) {
			var c = y(m(this, s));
			return c.ok = "function" != typeof a || a, c.fail = "function" == typeof b && b, c.domain = t ? r.domain : void 0, this._c.push(c), this._a && this._a.push(c), this._s && B(this, !1), c.promise
		},
		"catch": function(a) {
			return this.then(void 0, a)
		}
	}), z = function() {
		var a = new H;
		this.promise = a, this.resolve = f(G, a, 1), this.reject = f(F, a, 1)
	}), h(h.G + h.W + h.F * !v, {
		Promise: s
	}), c(44)(s, p), c(38)(p), J = c(25)[p], h(h.S + h.F * !v, p, {
		reject: function(a) {
			var b = y(this),
				c = b.reject;
			return c(a), b.promise
		}
	}), h(h.S + h.F * (d || !v), p, {
		resolve: function(a) {
			if(a instanceof s && w(a.constructor, this)) return a;
			var b = y(this),
				c = b.resolve;
			return c(a), b.promise
		}
	}), h(h.S + h.F * !(v && c(55)(function(a) {
		s.all(a)["catch"](u)
	})), p, {
		all: function(a) {
			var b = this,
				c = y(b),
				d = c.resolve,
				e = c.reject,
				f = A(function() {
					var c = [],
						f = 0,
						g = 1;
					l(a, !1, function(a) {
						var h = f++,
							i = !1;
						c.push(void 0), g++, b.resolve(a).then(function(a) {
							i || (i = !0, c[h] = a, --g || d(c))
						}, e)
					}), --g || d(c)
				});
			return f && e(f.error), c.promise
		},
		race: function(a) {
			var b = this,
				c = y(b),
				d = c.reject,
				e = A(function() {
					l(a, !1, function(a) {
						b.resolve(a).then(c.resolve, d)
					})
				});
			return e && d(e.error), c.promise
		}
	})
}, function(a, b, c) {
	var d = c(0),
		e = c(11),
		f = c(1),
		g = (c(2).Reflect || {}).apply,
		h = Function.apply;
	d(d.S + d.F * !c(3)(function() {
		g(function() {})
	}), "Reflect", {
		apply: function(a, b, c) {
			var d = e(a),
				i = f(c);
			return g ? g(d, b, i) : h.call(d, b, i)
		}
	})
}, function(a, b, c) {
	var d = c(0),
		e = c(34),
		f = c(11),
		g = c(1),
		h = c(4),
		i = c(3),
		j = c(94),
		k = (c(2).Reflect || {}).construct,
		l = i(function() {
			function a() {}
			return !(k(function() {}, [], a) instanceof a)
		}),
		m = !i(function() {
			k(function() {})
		});
	d(d.S + d.F * (l || m), "Reflect", {
		construct: function(a, b) {
			var c, d, i, n, o;
			if(f(a), g(b), c = 3 > arguments.length ? a : f(arguments[2]), m && !l) return k(a, b, c);
			if(a == c) {
				switch(b.length) {
					case 0:
						return new a;
					case 1:
						return new a(b[0]);
					case 2:
						return new a(b[0], b[1]);
					case 3:
						return new a(b[0], b[1], b[2]);
					case 4:
						return new a(b[0], b[1], b[2], b[3])
				}
				return d = [null], d.push.apply(d, b), new(j.apply(a, d))
			}
			return i = c.prototype, n = e(h(i) ? i : Object.prototype), o = Function.apply.call(a, n, b), h(o) ? o : n
		}
	})
}, function(a, b, c) {
	var d = c(7),
		e = c(0),
		f = c(1),
		g = c(24);
	e(e.S + e.F * c(3)(function() {
		Reflect.defineProperty(d.f({}, 1, {
			value: 1
		}), 1, {
			value: 2
		})
	}), "Reflect", {
		defineProperty: function(a, b, c) {
			f(a), b = g(b, !0), f(c);
			try {
				return d.f(a, b, c), !0
			} catch(b) {
				return !1
			}
		}
	})
}, function(a, b, c) {
	var d = c(0),
		e = c(16).f,
		f = c(1);
	d(d.S, "Reflect", {
		deleteProperty: function(a, b) {
			var c = e(f(a), b);
			return c && !c.configurable ? !1 : delete a[b]
		}
	})
}, function(a, b, c) {
	"use strict";
	var d = c(0),
		e = c(1),
		f = function(a) {
			this._t = e(a), this._i = 0;
			var c, b = this._k = [];
			for(c in a) b.push(c)
		};
	c(71)(f, "Object", function() {
		var c, a = this,
			b = a._k;
		do
			if(a._i >= b.length) return {
				value: void 0,
				done: !0
			}; while (!((c = b[a._i++]) in a._t));
		return {
			value: c,
			done: !1
		}
	}), d(d.S, "Reflect", {
		enumerate: function(a) {
			return new f(a)
		}
	})
}, function(a, b, c) {
	var d = c(16),
		e = c(0),
		f = c(1);
	e(e.S, "Reflect", {
		getOwnPropertyDescriptor: function(a, b) {
			return d.f(f(a), b)
		}
	})
}, function(a, b, c) {
	var d = c(0),
		e = c(17),
		f = c(1);
	d(d.S, "Reflect", {
		getPrototypeOf: function(a) {
			return e(f(a))
		}
	})
}, function(a, b, c) {
	function d(a, b) {
		var h, k, c = 3 > arguments.length ? a : arguments[2];
		return j(a) === c ? a[b] : (h = e.f(a, b)) ? g(h, "value") ? h.value : void 0 === h.get ? void 0 : h.get.call(c) : i(k = f(a)) ? d(k, b, c) : void 0
	}
	var e = c(16),
		f = c(17),
		g = c(10),
		h = c(0),
		i = c(4),
		j = c(1);
	h(h.S, "Reflect", {
		get: d
	})
}, function(a, b, c) {
	var d = c(0);
	d(d.S, "Reflect", {
		has: function(a, b) {
			return b in a
		}
	})
}, function(a, b, c) {
	var d = c(0),
		e = c(1),
		f = Object.isExtensible;
	d(d.S, "Reflect", {
		isExtensible: function(a) {
			return e(a), !f || f(a)
		}
	})
}, function(a, b, c) {
	var d = c(0);
	d(d.S, "Reflect", {
		ownKeys: c(108)
	})
}, function(a, b, c) {
	var d = c(0),
		e = c(1),
		f = Object.preventExtensions;
	d(d.S, "Reflect", {
		preventExtensions: function(a) {
			e(a);
			try {
				return f && f(a), !0
			} catch(b) {
				return !1
			}
		}
	})
}, function(a, b, c) {
	var d = c(0),
		e = c(76);
	e && d(d.S, "Reflect", {
		setPrototypeOf: function(a, b) {
			e.check(a, b);
			try {
				return e.set(a, b), !0
			} catch(b) {
				return !1
			}
		}
	})
}, function(a, b, c) {
	function d(a, b, c) {
		var n, o, i = 4 > arguments.length ? a : arguments[3],
			m = f.f(k(a), b);
		if(!m) {
			if(l(o = g(a))) return d(o, b, c, i);
			m = j(0)
		}
		return h(m, "value") ? !1 !== m.writable && l(i) && (n = f.f(i, b) || j(0), n.value = c, e.f(i, b, n), !0) : void 0 !== m.set && (m.set.call(i, c), !0)
	}
	var e = c(7),
		f = c(16),
		g = c(17),
		h = c(10),
		i = c(0),
		j = c(30),
		k = c(1),
		l = c(4);
	i(i.S, "Reflect", {
		set: d
	})
}, function(a, b, c) {
	var p, q, r, d = c(2),
		e = c(68),
		f = c(7).f,
		g = c(35).f,
		h = c(54),
		i = c(52),
		j = d.RegExp,
		k = j,
		l = j.prototype,
		m = /a/g,
		n = /a/g,
		o = new j(m) !== m;
	if(c(6) && (!o || c(3)(function() {
			return n[c(5)("match")] = !1, j(m) != m || j(n) == n || "/a/i" != j(m, "i")
		}))) {
		for((j = function(a, b) {
				var c = this instanceof j,
					d = h(a),
					f = void 0 === b;
				return !c && d && a.constructor === j && f ? a : e(o ? new k(d && !f ? a.source : a, b) : k((d = a instanceof j) ? a.source : a, d && f ? i.call(a) : b), c ? this : l, j)
			}, p = function(a) {
				a in j || f(j, a, {
					configurable: !0,
					get: function() {
						return k[a]
					},
					set: function(b) {
						k[a] = b
					}
				})
			}, q = g(k), r = 0); q.length > r;) p(q[r++]);
		l.constructor = j, j.prototype = l, c(13)(d, "RegExp", j)
	}
	c(38)("RegExp")
}, function(a, b, c) {
	c(51)("match", 1, function(a, b, c) {
		return [function(c) {
			"use strict";
			var d = a(this),
				e = void 0 == c ? void 0 : c[b];
			return void 0 === e ? new RegExp(c)[b](d + "") : e.call(c, d)
		}, c]
	})
}, function(a, b, c) {
	c(51)("replace", 2, function(a, b, c) {
		return [function(d, e) {
			"use strict";
			var f = a(this),
				g = void 0 == d ? void 0 : d[b];
			return void 0 === g ? c.call(f + "", d, e) : g.call(d, f, e)
		}, c]
	})
}, function(a, b, c) {
	c(51)("search", 1, function(a, b, c) {
		return [function(c) {
			"use strict";
			var d = a(this),
				e = void 0 == c ? void 0 : c[b];
			return void 0 === e ? new RegExp(c)[b](d + "") : e.call(c, d)
		}, c]
	})
}, function(a, b, c) {
	c(51)("split", 2, function(a, b, d) {
		"use strict";
		var k, e = c(54),
			f = d,
			g = [].push,
			h = "split",
			i = "length",
			j = "lastIndex";
		return "c" == "abbc" [h](/(b)*/)[1] || 4 != "test" [h](/(?:)/, -1)[i] || 2 != "ab" [h](/(?:ab)*/)[i] || 4 != "." [h](/(.?)(.?)/)[i] || 1 < "." [h](/()()/)[i] || "" [h](/.?/)[i] ? (k = void 0 === /()??/.exec("")[1], d = function(a, b) {
			var o, p, q, r, s, d, h, l, m, n, c = this + "";
			if(void 0 === a && 0 === b) return [];
			if(!e(a)) return f.call(c, a, b);
			for(d = [], h = (a.ignoreCase ? "i" : "") + (a.multiline ? "m" : "") + (a.unicode ? "u" : "") + (a.sticky ? "y" : ""), l = 0, m = void 0 === b ? 4294967295 : b >>> 0, n = new RegExp(a.source, h + "g"), k || (o = new RegExp("^" + n.source + "$(?!\\s)", h));
				(p = n.exec(c)) && (q = p.index + p[0][i], !(q > l && (d.push(c.slice(l, p.index)), !k && 1 < p[i] && p[0].replace(o, function() {
					for(s = 1; s < arguments[i] - 2; s++) void 0 === arguments[s] && (p[s] = void 0)
				}), 1 < p[i] && p.index < c[i] && g.apply(d, p.slice(1)), r = p[0][i], l = q, d[i] >= m)));) n[j] === p.index && n[j]++;
			return l === c[i] ? (r || !n.test("")) && d.push("") : d.push(c.slice(l)), d[i] > m ? d.slice(0, m) : d
		}) : "0" [h](void 0, 0)[i] && (d = function(a, b) {
			return void 0 === a && 0 === b ? [] : f.call(this, a, b)
		}), [function(c, e) {
			var f = a(this),
				g = void 0 == c ? void 0 : c[b];
			return void 0 === g ? d.call(f + "", c, e) : g.call(c, f, e)
		}, d]
	})
}, function(a, b, c) {
	"use strict";
	c(115);
	var d = c(1),
		e = c(52),
		f = c(6),
		g = "toString",
		h = /./ [g],
		i = function(a) {
			c(13)(RegExp.prototype, g, a, !0)
		};
	c(3)(function() {
		return "/a/b" != h.call({
			source: "a",
			flags: "b"
		})
	}) ? i(function() {
		var a = d(this);
		return "/".concat(a.source, "/", "flags" in a ? a.flags : !f && a instanceof RegExp ? e.call(a) : void 0)
	}) : h.name != g && i(function() {
		return h.call(this)
	})
}, function(a, b, c) {
	"use strict";
	c(14)("anchor", function(a) {
		return function(b) {
			return a(this, "a", "name", b)
		}
	})
}, function(a, b, c) {
	"use strict";
	c(14)("big", function(a) {
		return function() {
			return a(this, "big", "", "")
		}
	})
}, function(a, b, c) {
	"use strict";
	c(14)("blink", function(a) {
		return function() {
			return a(this, "blink", "", "")
		}
	})
}, function(a, b, c) {
	"use strict";
	c(14)("bold", function(a) {
		return function() {
			return a(this, "b", "", "")
		}
	})
}, function(a, b, c) {
	"use strict";
	var d = c(0),
		e = c(79)(!1);
	d(d.P, "String", {
		codePointAt: function(a) {
			return e(this, a)
		}
	})
}, function(a, b, c) {
	"use strict";
	var d = c(0),
		e = c(8),
		f = c(80),
		g = "endsWith";
	"" [g], d(d.P + d.F * c(66)(g), "String", {
		endsWith: function(a) {
			var b = f(this, a, g),
				c = 1 < arguments.length ? arguments[1] : void 0,
				d = e(b.length),
				h = void 0 === c ? d : Math.min(e(c), d),
				i = a + "";
			return b.slice(h - i.length, h) === i
		}
	})
}, function(a, b, c) {
	"use strict";
	c(14)("fixed", function(a) {
		return function() {
			return a(this, "tt", "", "")
		}
	})
}, function(a, b, c) {
	"use strict";
	c(14)("fontcolor", function(a) {
		return function(b) {
			return a(this, "font", "color", b)
		}
	})
}, function(a, b, c) {
	"use strict";
	c(14)("fontsize", function(a) {
		return function(b) {
			return a(this, "font", "size", b)
		}
	})
}, function(a, b, c) {
	var d = c(0),
		e = c(39),
		f = String.fromCharCode,
		g = String.fromCodePoint;
	d(d.S + d.F * (!!g && 1 != g.length), "String", {
		fromCodePoint: function() {
			for(var d, a = [], b = arguments.length, c = 0; b > c;) {
				if(d = +arguments[c++], e(d, 1114111) !== d) throw RangeError(d + " is not a valid code point");
				a.push(65536 > d ? f(d) : f(((d -= 65536) >> 10) + 55296, d % 1024 + 56320))
			}
			return a.join("")
		}
	})
}, function(a, b, c) {
	"use strict";
	var d = c(0),
		e = c(80),
		f = "includes";
	d(d.P + d.F * c(66)(f), "String", {
		includes: function(a) {
			return !!~e(this, a, f).indexOf(a, 1 < arguments.length ? arguments[1] : void 0)
		}
	})
}, function(a, b, c) {
	"use strict";
	c(14)("italics", function(a) {
		return function() {
			return a(this, "i", "", "")
		}
	})
}, function(a, b, c) {
	"use strict";
	var d = c(79)(!0);
	c(72)(String, "String", function(a) {
		this._t = a + "", this._i = 0
	}, function() {
		var c, a = this._t,
			b = this._i;
		return b >= a.length ? {
			value: void 0,
			done: !0
		} : (c = d(a, b), this._i += c.length, {
			value: c,
			done: !1
		})
	})
}, function(a, b, c) {
	"use strict";
	c(14)("link", function(a) {
		return function(b) {
			return a(this, "a", "href", b)
		}
	})
}, function(a, b, c) {
	var d = c(0),
		e = c(15),
		f = c(8);
	d(d.S, "String", {
		raw: function(a) {
			for(var b = e(a.raw), c = f(b.length), d = arguments.length, g = [], h = 0; c > h;) g.push(b[h++] + ""), d > h && g.push(arguments[h] + "");
			return g.join("")
		}
	})
}, function(a, b, c) {
	var d = c(0);
	d(d.P, "String", {
		repeat: c(81)
	})
}, function(a, b, c) {
	"use strict";
	c(14)("small", function(a) {
		return function() {
			return a(this, "small", "", "")
		}
	})
}, function(a, b, c) {
	"use strict";
	var d = c(0),
		e = c(8),
		f = c(80),
		g = "startsWith";
	"" [g], d(d.P + d.F * c(66)(g), "String", {
		startsWith: function(a) {
			var b = f(this, a, g),
				c = e(Math.min(1 < arguments.length ? arguments[1] : void 0, b.length)),
				d = a + "";
			return b.slice(c, c + d.length) === d
		}
	})
}, function(a, b, c) {
	"use strict";
	c(14)("strike", function(a) {
		return function() {
			return a(this, "strike", "", "")
		}
	})
}, function(a, b, c) {
	"use strict";
	c(14)("sub", function(a) {
		return function() {
			return a(this, "sub", "", "")
		}
	})
}, function(a, b, c) {
	"use strict";
	c(14)("sup", function(a) {
		return function() {
			return a(this, "sup", "", "")
		}
	})
}, function(a, b, c) {
	"use strict";
	c(45)("trim", function(a) {
		return function() {
			return a(this, 3)
		}
	})
}, function(a, b, c) {
	"use strict";
	var ab, bb, d = c(2),
		e = c(10),
		f = c(6),
		g = c(0),
		h = c(13),
		i = c(29).KEY,
		j = c(3),
		k = c(58),
		l = c(44),
		m = c(40),
		n = c(5),
		o = c(113),
		p = c(85),
		q = c(137),
		r = c(136),
		s = c(70),
		t = c(1),
		u = c(15),
		v = c(24),
		w = c(30),
		x = c(34),
		y = c(105),
		z = c(16),
		A = c(7),
		B = c(36),
		C = z.f,
		D = A.f,
		E = y.f,
		F = d.Symbol,
		G = d.JSON,
		H = G && G.stringify,
		I = "prototype",
		J = n("_hidden"),
		K = n("toPrimitive"),
		L = {}.propertyIsEnumerable,
		M = k("symbol-registry"),
		N = k("symbols"),
		O = k("op-symbols"),
		P = Object[I],
		Q = "function" == typeof F,
		R = d.QObject,
		S = !R || !R[I] || !R[I].findChild,
		T = f && j(function() {
			return 7 != x(D({}, "a", {
				get: function() {
					return D(this, "a", {
						value: 7
					}).a
				}
			})).a
		}) ? function(a, b, c) {
			var d = C(P, b);
			d && delete P[b], D(a, b, c), d && a !== P && D(P, b, d)
		} : D,
		U = function(a) {
			var b = N[a] = x(F[I]);
			return b._k = a, b
		},
		V = Q && "symbol" == typeof F.iterator ? function(a) {
			return "symbol" == typeof a
		} : function(a) {
			return a instanceof F
		},
		W = function(a, b, c) {
			return a === P && W(O, b, c), t(a), b = v(b, !0), t(c), e(N, b) ? (c.enumerable ? (e(a, J) && a[J][b] && (a[J][b] = !1), c = x(c, {
				enumerable: w(0, !1)
			})) : (!e(a, J) && D(a, J, w(1, {})), a[J][b] = !0), T(a, b, c)) : D(a, b, c)
		},
		X = function(a, b) {
			t(a);
			for(var f, c = r(b = u(b)), d = 0, e = c.length; e > d;) W(a, f = c[d++], b[f]);
			return a
		},
		Y = function(a) {
			var b = L.call(this, a = v(a, !0));
			return this === P && e(N, a) && !e(O, a) ? !1 : b || !e(this, a) || !e(N, a) || e(this, J) && this[J][a] ? b : !0
		},
		Z = function(a, b) {
			if(a = u(a), b = v(b, !0), a !== P || !e(N, b) || e(O, b)) {
				var c = C(a, b);
				return c && e(N, b) && !(e(a, J) && a[J][b]) && (c.enumerable = !0), c
			}
		},
		$ = function(a) {
			for(var f, b = E(u(a)), c = [], d = 0; b.length > d;) e(N, f = b[d++]) || f == J || f == i || c.push(f);
			return c
		},
		_ = function(a) {
			for(var g, b = a === P, c = E(b ? O : u(a)), d = [], f = 0; c.length > f;) e(N, g = c[f++]) && (!b || e(P, g)) && d.push(N[g]);
			return d
		};
	for(Q || (F = function() {
			if(this instanceof F) throw TypeError("Symbol is not a constructor!");
			var a = m(0 < arguments.length ? arguments[0] : void 0),
				b = function(c) {
					this === P && b.call(O, c), e(this, J) && e(this[J], a) && (this[J][a] = !1), T(this, a, w(1, c))
				};
			return f && S && T(P, a, {
				configurable: !0,
				set: b
			}), U(a)
		}, h(F[I], "toString", function() {
			return this._k
		}), z.f = Z, A.f = W, c(35).f = y.f = $, c(48).f = Y, c(57).f = _, f && !c(33) && h(P, "propertyIsEnumerable", Y, !0), o.f = function(a) {
			return U(n(a))
		}), g(g.G + g.W + g.F * !Q, {
			Symbol: F
		}), ab = "hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables".split(","), bb = 0; ab.length > bb;) n(ab[bb++]);
	for(ab = B(n.store), bb = 0; ab.length > bb;) p(ab[bb++]);
	g(g.S + g.F * !Q, "Symbol", {
		"for": function(a) {
			return e(M, a += "") ? M[a] : M[a] = F(a)
		},
		keyFor: function(a) {
			if(V(a)) return q(M, a);
			throw TypeError(a + " is not a symbol!")
		},
		useSetter: function() {
			S = !0
		},
		useSimple: function() {
			S = !1
		}
	}), g(g.S + g.F * !Q, "Object", {
		create: function(a, b) {
			return void 0 === b ? x(a) : X(x(a), b)
		},
		defineProperty: W,
		defineProperties: X,
		getOwnPropertyDescriptor: Z,
		getOwnPropertyNames: $,
		getOwnPropertySymbols: _
	}), G && g(g.S + g.F * (!Q || j(function() {
		var a = F();
		return "[null]" != H([a]) || "{}" != H({
			a: a
		}) || "{}" != H(Object(a))
	})), "JSON", {
		stringify: function(a) {
			if(void 0 !== a && !V(a)) {
				for(var d, e, b = [a], c = 1; arguments.length > c;) b.push(arguments[c++]);
				return d = b[1], "function" == typeof d && (e = d), (e || !s(d)) && (d = function(a, b) {
					return e && (b = e.call(this, a, b)), V(b) ? void 0 : b
				}), b[1] = d, H.apply(G, b)
			}
		}
	}), F[I][K] || c(12)(F[I], K, F[I].valueOf), l(F, "Symbol"), l(Math, "Math", !0), l(d.JSON, "JSON", !0)
}, function(a, b, c) {
	"use strict";
	var d = c(0),
		e = c(59),
		f = c(84),
		g = c(1),
		h = c(39),
		i = c(8),
		j = c(4),
		k = c(2).ArrayBuffer,
		l = c(78),
		m = f.ArrayBuffer,
		n = f.DataView,
		o = e.ABV && k.isView,
		p = m.prototype.slice,
		q = e.VIEW,
		r = "ArrayBuffer";
	d(d.G + d.W + d.F * (k !== m), {
		ArrayBuffer: m
	}), d(d.S + d.F * !e.CONSTR, r, {
		isView: function(a) {
			return o && o(a) || j(a) && q in a
		}
	}), d(d.P + d.U + d.F * c(3)(function() {
		return !new m(2).slice(1, void 0).byteLength
	}), r, {
		slice: function(a, b) {
			if(void 0 !== p && void 0 === b) return p.call(g(this), a);
			for(var c = g(this).byteLength, d = h(a, c), e = h(void 0 === b ? c : b, c), f = new(l(this, m))(i(e - d)), j = new n(this), k = new n(f), o = 0; e > d;) k.setUint8(o++, j.getUint8(d++));
			return f
		}
	}), c(38)(r)
}, function(a, b, c) {
	var d = c(0);
	d(d.G + d.W + d.F * !c(59).ABV, {
		DataView: c(84).DataView
	})
}, function(a, b, c) {
	c(28)("Float32", 4, function(a) {
		return function(b, c, d) {
			return a(this, b, c, d)
		}
	})
}, function(a, b, c) {
	c(28)("Float64", 8, function(a) {
		return function(b, c, d) {
			return a(this, b, c, d)
		}
	})
}, function(a, b, c) {
	c(28)("Int16", 2, function(a) {
		return function(b, c, d) {
			return a(this, b, c, d)
		}
	})
}, function(a, b, c) {
	c(28)("Int32", 4, function(a) {
		return function(b, c, d) {
			return a(this, b, c, d)
		}
	})
}, function(a, b, c) {
	c(28)("Int8", 1, function(a) {
		return function(b, c, d) {
			return a(this, b, c, d)
		}
	})
}, function(a, b, c) {
	c(28)("Uint16", 2, function(a) {
		return function(b, c, d) {
			return a(this, b, c, d)
		}
	})
}, function(a, b, c) {
	c(28)("Uint32", 4, function(a) {
		return function(b, c, d) {
			return a(this, b, c, d)
		}
	})
}, function(a, b, c) {
	c(28)("Uint8", 1, function(a) {
		return function(b, c, d) {
			return a(this, b, c, d)
		}
	})
}, function(a, b, c) {
	c(28)("Uint8", 1, function(a) {
		return function(b, c, d) {
			return a(this, b, c, d)
		}
	}, !0)
}, function(a, b, c) {
	"use strict";
	var d = c(97);
	c(50)("WeakSet", function(a) {
		return function() {
			return a(this, 0 < arguments.length ? arguments[0] : void 0)
		}
	}, {
		add: function(a) {
			return d.def(this, a, !0)
		}
	}, d, !1, !0)
}, function(a, b, c) {
	"use strict";
	var d = c(0),
		e = c(49)(!0);
	d(d.P, "Array", {
		includes: function(a) {
			return e(this, a, 1 < arguments.length ? arguments[1] : void 0)
		}
	}), c(41)("includes")
}, function(a, b, c) {
	var d = c(0),
		e = c(75)(),
		f = c(2).process,
		g = "process" == c(19)(f);
	d(d.G, {
		asap: function(a) {
			var b = g && f.domain;
			e(b ? b.bind(a) : a)
		}
	})
}, function(a, b, c) {
	var d = c(0),
		e = c(19);
	d(d.S, "Error", {
		isError: function(a) {
			return "Error" === e(a)
		}
	})
}, function(a, b, c) {
	var d = c(0);
	d(d.P + d.R, "Map", {
		toJSON: c(96)("Map")
	})
}, function(a, b, c) {
	var d = c(0);
	d(d.S, "Math", {
		iaddh: function(a, b, c, d) {
			var e = a >>> 0,
				f = c >>> 0;
			return 0 | (b >>> 0) + (d >>> 0) + ((e & f | (e | f) & ~(e + f >>> 0)) >>> 31)
		}
	})
}, function(a, b, c) {
	var d = c(0);
	d(d.S, "Math", {
		imulh: function(a, b) {
			var c = 65535,
				d = +a,
				e = +b,
				f = d & c,
				g = e & c,
				h = d >> 16,
				i = e >> 16,
				j = (h * g >>> 0) + (f * g >>> 16);
			return h * i + (j >> 16) + ((f * i >>> 0) + (j & c) >> 16)
		}
	})
}, function(a, b, c) {
	var d = c(0);
	d(d.S, "Math", {
		isubh: function(a, b, c, d) {
			var e = a >>> 0,
				f = c >>> 0;
			return 0 | (b >>> 0) - (d >>> 0) - ((~e & f | ~(e ^ f) & e - f >>> 0) >>> 31)
		}
	})
}, function(a, b, c) {
	var d = c(0);
	d(d.S, "Math", {
		umulh: function(a, b) {
			var c = 65535,
				d = +a,
				e = +b,
				f = d & c,
				g = e & c,
				h = d >>> 16,
				i = e >>> 16,
				j = (h * g >>> 0) + (f * g >>> 16);
			return h * i + (j >>> 16) + ((f * i >>> 0) + (j & c) >>> 16)
		}
	})
}, function(a, b, c) {
	"use strict";
	var d = c(0),
		e = c(9),
		f = c(11),
		g = c(7);
	c(6) && d(d.P + c(56), "Object", {
		__defineGetter__: function(a, b) {
			g.f(e(this), a, {
				get: f(b),
				enumerable: !0,
				configurable: !0
			})
		}
	})
}, function(a, b, c) {
	"use strict";
	var d = c(0),
		e = c(9),
		f = c(11),
		g = c(7);
	c(6) && d(d.P + c(56), "Object", {
		__defineSetter__: function(a, b) {
			g.f(e(this), a, {
				set: f(b),
				enumerable: !0,
				configurable: !0
			})
		}
	})
}, function(a, b, c) {
	var d = c(0),
		e = c(107)(!0);
	d(d.S, "Object", {
		entries: function(a) {
			return e(a)
		}
	})
}, function(a, b, c) {
	var d = c(0),
		e = c(108),
		f = c(15),
		g = c(16),
		h = c(63);
	d(d.S, "Object", {
		getOwnPropertyDescriptors: function(a) {
			for(var k, b = f(a), c = g.f, d = e(b), i = {}, j = 0; d.length > j;) h(i, k = d[j++], c(b, k));
			return i
		}
	})
}, function(a, b, c) {
	"use strict";
	var d = c(0),
		e = c(9),
		f = c(24),
		g = c(17),
		h = c(16).f;
	c(6) && d(d.P + c(56), "Object", {
		__lookupGetter__: function(a) {
			var d, b = e(this),
				c = f(a, !0);
			do
				if(d = h(b, c)) return d.get; while (b = g(b))
		}
	})
}, function(a, b, c) {
	"use strict";
	var d = c(0),
		e = c(9),
		f = c(24),
		g = c(17),
		h = c(16).f;
	c(6) && d(d.P + c(56), "Object", {
		__lookupSetter__: function(a) {
			var d, b = e(this),
				c = f(a, !0);
			do
				if(d = h(b, c)) return d.set; while (b = g(b))
		}
	})
}, function(a, b, c) {
	var d = c(0),
		e = c(107)(!1);
	d(d.S, "Object", {
		values: function(a) {
			return e(a)
		}
	})
}, function(a, b, c) {
	"use strict";
	var u, v, d = c(0),
		e = c(2),
		f = c(25),
		g = c(75)(),
		h = c(5)("observable"),
		i = c(11),
		j = c(1),
		k = c(32),
		l = c(37),
		m = c(12),
		n = c(42),
		o = n.RETURN,
		p = function(a) {
			return null == a ? void 0 : i(a)
		},
		q = function(a) {
			var b = a._c;
			b && (a._c = void 0, b())
		},
		r = function(a) {
			return void 0 === a._o
		},
		s = function(a) {
			r(a) || (a._o = void 0, q(a))
		},
		t = function(a, b) {
			j(a), this._c = void 0, this._o = a, a = new u(this);
			try {
				var c = b(a),
					d = c;
				null != c && ("function" == typeof c.unsubscribe ? c = function() {
					d.unsubscribe()
				} : i(c), this._c = c)
			} catch(c) {
				return void a.error(c)
			}
			r(this) && q(this)
		};
	t.prototype = l({}, {
		unsubscribe: function() {
			s(this)
		}
	}), u = function(a) {
		this._s = a
	}, u.prototype = l({}, {
		next: function(a) {
			var c, d, b = this._s;
			if(!r(b)) {
				c = b._o;
				try {
					if(d = p(c.next)) return d.call(c, a)
				} catch(c) {
					try {
						s(b)
					} finally {
						throw c
					}
				}
			}
		},
		error: function(a) {
			var c, d, b = this._s;
			if(r(b)) throw a;
			c = b._o, b._o = void 0;
			try {
				if(d = p(c.error), !d) throw a;
				a = d.call(c, a)
			} catch(c) {
				try {
					q(b)
				} finally {
					throw c
				}
			}
			return q(b), a
		},
		complete: function(a) {
			var c, d, b = this._s;
			if(!r(b)) {
				c = b._o, b._o = void 0;
				try {
					d = p(c.complete), a = d ? d.call(c, a) : void 0
				} catch(c) {
					try {
						q(b)
					} finally {
						throw c
					}
				}
				return q(b), a
			}
		}
	}), v = function(a) {
		k(this, v, "Observable", "_f")._f = i(a)
	}, l(v.prototype, {
		subscribe: function(a) {
			return new t(a, this._f)
		},
		forEach: function(a) {
			var b = this;
			return new(f.Promise || e.Promise)(function(c, d) {
				i(a);
				var e = b.subscribe({
					next: function(b) {
						try {
							return a(b)
						} catch(b) {
							d(b), e.unsubscribe()
						}
					},
					error: d,
					complete: c
				})
			})
		}
	}), l(v, {
		from: function(a) {
			var d, b = "function" == typeof this ? this : v,
				c = p(j(a)[h]);
			return c ? (d = j(c.call(a)), d.constructor === b ? d : new b(function(a) {
				return d.subscribe(a)
			})) : new b(function(b) {
				var c = !1;
				return g(function() {
						if(!c) {
							try {
								if(n(a, !1, function(a) {
										return b.next(a), c ? o : void 0
									}) === o) return
							} catch(d) {
								if(c) throw d;
								return void b.error(d)
							}
							b.complete()
						}
					}),
					function() {
						c = !0
					}
			})
		},
		of: function() {
			for(var a = 0, b = arguments.length, c = Array(b); b > a;) c[a] = arguments[a++];
			return new("function" == typeof this ? this : v)(function(a) {
				var b = !1;
				return g(function() {
						if(!b) {
							for(var d = 0; d < c.length; ++d)
								if(a.next(c[d]), b) return;
							a.complete()
						}
					}),
					function() {
						b = !0
					}
			})
		}
	}), m(v.prototype, h, function() {
		return this
	}), d(d.G, {
		Observable: v
	}), c(38)("Observable")
}, function(a, b, c) {
	var d = c(27),
		e = c(1),
		f = d.key,
		g = d.set;
	d.exp({
		defineMetadata: function(a, b, c, d) {
			g(a, b, e(c), f(d))
		}
	})
}, function(a, b, c) {
	var d = c(27),
		e = c(1),
		f = d.key,
		g = d.map,
		h = d.store;
	d.exp({
		deleteMetadata: function(a, b) {
			var i, c = 3 > arguments.length ? void 0 : f(arguments[2]),
				d = g(e(b), c, !1);
			return void 0 !== d && d["delete"](a) ? d.size ? !0 : (i = h.get(b), i["delete"](c), !!i.size || h["delete"](b)) : !1
		}
	})
}, function(a, b, c) {
	var d = c(116),
		e = c(92),
		f = c(27),
		g = c(1),
		h = c(17),
		i = f.keys,
		j = f.key,
		k = function(a, b) {
			var g, c = i(a, b),
				f = h(a);
			return null === f ? c : (g = k(f, b), g.length ? c.length ? e(new d(c.concat(g))) : g : c)
		};
	f.exp({
		getMetadataKeys: function(a) {
			return k(g(a), 2 > arguments.length ? void 0 : j(arguments[1]))
		}
	})
}, function(a, b, c) {
	var d = c(27),
		e = c(1),
		f = c(17),
		g = d.has,
		h = d.get,
		i = d.key,
		j = function(a, b, c) {
			var e, d = g(a, b, c);
			return d ? h(a, b, c) : (e = f(b), null === e ? void 0 : j(a, e, c))
		};
	d.exp({
		getMetadata: function(a, b) {
			return j(a, e(b), 3 > arguments.length ? void 0 : i(arguments[2]))
		}
	})
}, function(a, b, c) {
	var d = c(27),
		e = c(1),
		f = d.keys,
		g = d.key;
	d.exp({
		getOwnMetadataKeys: function(a) {
			return f(e(a), 2 > arguments.length ? void 0 : g(arguments[1]))
		}
	})
}, function(a, b, c) {
	var d = c(27),
		e = c(1),
		f = d.get,
		g = d.key;
	d.exp({
		getOwnMetadata: function(a, b) {
			return f(a, e(b), 3 > arguments.length ? void 0 : g(arguments[2]))
		}
	})
}, function(a, b, c) {
	var d = c(27),
		e = c(1),
		f = c(17),
		g = d.has,
		h = d.key,
		i = function(a, b, c) {
			var e, d = g(a, b, c);
			return d ? !0 : (e = f(b), null !== e && i(a, e, c))
		};
	d.exp({
		hasMetadata: function(a, b) {
			return i(a, e(b), 3 > arguments.length ? void 0 : h(arguments[2]))
		}
	})
}, function(a, b, c) {
	var d = c(27),
		e = c(1),
		f = d.has,
		g = d.key;
	d.exp({
		hasOwnMetadata: function(a, b) {
			return f(a, e(b), 3 > arguments.length ? void 0 : g(arguments[2]))
		}
	})
}, function(a, b, c) {
	var d = c(27),
		e = c(1),
		f = c(11),
		g = d.key,
		h = d.set;
	d.exp({
		metadata: function(a, b) {
			return function(c, d) {
				h(a, b, (void 0 === d ? f : e)(c), g(d))
			}
		}
	})
}, function(a, b, c) {
	var d = c(0);
	d(d.P + d.R, "Set", {
		toJSON: c(96)("Set")
	})
}, function(a, b, c) {
	"use strict";
	var d = c(0),
		e = c(79)(!0);
	d(d.P, "String", {
		at: function(a) {
			return e(this, a)
		}
	})
}, function(a, b, c) {
	"use strict";
	var d = c(0),
		e = c(20),
		f = c(8),
		g = c(54),
		h = c(52),
		i = RegExp.prototype,
		j = function(a, b) {
			this._r = a, this._s = b
		};
	c(71)(j, "RegExp String", function() {
		var a = this._r.exec(this._s);
		return {
			value: a,
			done: null === a
		}
	}), d(d.P, "String", {
		matchAll: function(a) {
			if(e(this), !g(a)) throw TypeError(a + " is not a regexp!");
			var b = this + "",
				c = "flags" in i ? a.flags + "" : h.call(a),
				d = new RegExp(a.source, ~c.indexOf("g") ? c : "g" + c);
			return d.lastIndex = f(a.lastIndex), new j(d, b)
		}
	})
}, function(a, b, c) {
	"use strict";
	var d = c(0),
		e = c(112);
	d(d.P, "String", {
		padEnd: function(a) {
			return e(this, a, 1 < arguments.length ? arguments[1] : void 0, !1)
		}
	})
}, function(a, b, c) {
	"use strict";
	var d = c(0),
		e = c(112);
	d(d.P, "String", {
		padStart: function(a) {
			return e(this, a, 1 < arguments.length ? arguments[1] : void 0, !0)
		}
	})
}, function(a, b, c) {
	"use strict";
	c(45)("trimLeft", function(a) {
		return function() {
			return a(this, 1)
		}
	}, "trimStart")
}, function(a, b, c) {
	"use strict";
	c(45)("trimRight", function(a) {
		return function() {
			return a(this, 2)
		}
	}, "trimEnd")
}, function(a, b, c) {
	c(85)("asyncIterator")
}, function(a, b, c) {
	c(85)("observable")
}, function(a, b, c) {
	var d = c(0);
	d(d.S, "System", {
		global: c(2)
	})
}, function(a, b, c) {
	var d, e, f, g, h, i, j, k, l, m, n, r, o, p, q;
	for(d = c(87), e = c(13), f = c(2), g = c(12), h = c(43), i = c(5), j = i("iterator"), k = i("toStringTag"), l = h.Array, m = ["NodeList", "DOMTokenList", "MediaList", "StyleSheetList", "CSSRuleList"], n = 0; 5 > n; n++)
		if(o = m[n], p = f[o], q = p && p.prototype, q)
			for(r in q[j] || g(q, j, l), q[k] || g(q, k, o), h[o] = l, d) q[r] || e(q, r, d[r], !0)
}, function(a, b, c) {
	var d = c(0),
		e = c(83);
	d(d.G + d.B, {
		setImmediate: e.set,
		clearImmediate: e.clear
	})
}, function(a, b, c) {
	var d = c(2),
		e = c(0),
		f = c(53),
		g = c(138),
		h = d.navigator,
		i = !!h && /MSIE .\./.test(h.userAgent),
		j = function(a) {
			return i ? function(b, c) {
				return a(f(g, [].slice.call(arguments, 2), "function" == typeof b ? b : Function(b)), c)
			} : a
		};
	e(e.G + e.B + e.F * i, {
		setTimeout: j(d.setTimeout),
		setInterval: j(d.setInterval)
	})
}, function(a, b, c) {
	c(261), c(200), c(202), c(201), c(204), c(206), c(211), c(205), c(203), c(213), c(212), c(208), c(209), c(207), c(199), c(210), c(214), c(215), c(167), c(169), c(168), c(217), c(216), c(187), c(197), c(198), c(188), c(189), c(190), c(191), c(192), c(193), c(194), c(195), c(196), c(170), c(171), c(172), c(173), c(174), c(175), c(176), c(177), c(178), c(179), c(180), c(181), c(182), c(183), c(184), c(185), c(186), c(248), c(253), c(260), c(251), c(243), c(244), c(249), c(254), c(256), c(239), c(240), c(241), c(242), c(245), c(246), c(247), c(250), c(252), c(255), c(257), c(258), c(259), c(162), c(164), c(163), c(166), c(165), c(151), c(149), c(155), c(152), c(158), c(160), c(148), c(154), c(145), c(159), c(143), c(157), c(156), c(150), c(153), c(142), c(144), c(147), c(146), c(161), c(87), c(233), c(238), c(115), c(234), c(235), c(236), c(237), c(218), c(114), c(116), c(117), c(273), c(262), c(263), c(268), c(271), c(272), c(266), c(269), c(267), c(270), c(264), c(265), c(219), c(220), c(221), c(222), c(223), c(226), c(224), c(225), c(227), c(228), c(229), c(230), c(232), c(231), c(274), c(300), c(303), c(302), c(304), c(305), c(301), c(306), c(307), c(285), c(288), c(284), c(282), c(283), c(286), c(287), c(277), c(299), c(308), c(276), c(278), c(280), c(279), c(281), c(290), c(291), c(293), c(292), c(295), c(294), c(296), c(297), c(298), c(275), c(289), c(311), c(310), c(309), a.exports = c(25)
}, function(a) {
	if("undefined" != typeof Element && !Element.prototype.matches) {
		var b = Element.prototype;
		b.matches = b.matchesSelector || b.mozMatchesSelector || b.msMatchesSelector || b.oMatchesSelector || b.webkitMatchesSelector
	}
	a.exports = function(a, b) {
		for(; a && 9 !== a.nodeType;) {
			if("function" == typeof a.matches && a.matches(b)) return a;
			a = a.parentNode
		}
	}
}, function(a, b, c) {
	function d(a, b, c, d) {
		return function(c) {
			c.delegateTarget = e(c.target, b), c.delegateTarget && d.call(a, c)
		}
	}
	var e = c(313);
	a.exports = function(a, b, c, e, f) {
		var g = d.apply(this, arguments);
		return a.addEventListener(c, g, f), {
			destroy: function() {
				a.removeEventListener(c, g, f)
			}
		}
	}
}, function() {}, function() {}, function() {}, function() {}, function() {}, function(a, b) {
	b.node = function(a) {
		return void 0 !== a && a instanceof HTMLElement && 1 === a.nodeType
	}, b.nodeList = function(a) {
		var c = Object.prototype.toString.call(a);
		return void 0 !== a && ("[object NodeList]" === c || "[object HTMLCollection]" === c) && "length" in a && (0 === a.length || b.node(a[0]))
	}, b.string = function(a) {
		return "string" == typeof a || a instanceof String
	}, b.fn = function(a) {
		var b = Object.prototype.toString.call(a);
		return "[object Function]" === b
	}
}, function(a, b, c) {
	function d(a, b, c) {
		return a.addEventListener(b, c), {
			destroy: function() {
				a.removeEventListener(b, c)
			}
		}
	}

	function e(a, b, c) {
		return Array.prototype.forEach.call(a, function(a) {
			a.addEventListener(b, c)
		}), {
			destroy: function() {
				Array.prototype.forEach.call(a, function(a) {
					a.removeEventListener(b, c)
				})
			}
		}
	}

	function f(a, b, c) {
		return h(document.body, a, b, c)
	}
	var g = c(320),
		h = c(314);
	a.exports = function(a, b, c) {
		if(!a && !b && !c) throw new Error("Missing required arguments");
		if(!g.string(b)) throw new TypeError("Second argument must be a String");
		if(!g.fn(c)) throw new TypeError("Third argument must be a Function");
		if(g.node(a)) return d(a, b, c);
		if(g.nodeList(a)) return e(a, b, c);
		if(g.string(a)) return f(a, b, c);
		throw new TypeError("First argument must be a String, HTMLElement, HTMLCollection, or NodeList")
	}
}, function(a, b) {
	var d, e, c = String.fromCharCode;
	Object.values || (Object.values = function(a) {
			if(a !== Object(a)) throw new TypeError("Object.values called on a non-object");
			var c, b = [];
			for(c in a) Object.prototype.hasOwnProperty.call(a, c) && b.push(a[c]);
			return b
		}),
		function() {
			function f(a, b) {
				var d, c = {};
				for(d in a) d !== b && (c[d] = a[d]);
				if(b in a)
					for(d in a[b]) c[d] = a[b][d];
				return c
			}

			function g(a, b) {
				function d(a, b) {
					for(var c = 0; c < b.length; c += 1)
						if(b[c] === a) return !0;
					return !1
				}

				function e(a) {
					return a.replace(/^\s+|\s+$/g, "")
				}

				function g(a) {
					return a.replace(/^\s+/g, "")
				}

				function h(a) {
					a = a || m.before_newline;
					var b = Object.values(m);
					if(!d(a, b)) throw new Error("Invalid Option Value: The option 'operator_position' must be one of the following values\n" + b + "\nYou passed in: '" + a + "'");
					return a
				}

				function i(a) {
					var b = 0,
						c = -1,
						d = [],
						e = !0;
					this.set_indent = function(d) {
						b = a.baseIndentLength + d * a.indent_length, c = d
					}, this.get_character_count = function() {
						return b
					}, this.is_empty = function() {
						return e
					}, this.last = function() {
						return this._empty ? null : d[d.length - 1]
					}, this.push = function(a) {
						d.push(a), b += a.length, e = !1
					}, this.pop = function() {
						var a = null;
						return e || (a = d.pop(), b -= a.length, e = 0 === d.length), a
					}, this.remove_indent = function() {
						c > 0 && (c -= 1, b -= a.indent_length)
					}, this.trim = function() {
						for(;
							" " === this.last();) d.pop(), b -= 1;
						e = 0 === d.length
					}, this.toString = function() {
						var b = "";
						return this._empty || (c >= 0 && (b = a.indent_cache[c]), b += d.join("")), b
					}
				}

				function j(a, b) {
					b = b || "", this.indent_cache = [b], this.baseIndentLength = b.length, this.indent_length = a.length, this.raw = !1;
					var c = [];
					this.baseIndentString = b, this.indent_string = a, this.previous_line = null, this.current_line = null, this.space_before_token = !1, this.add_outputline = function() {
						this.previous_line = this.current_line, this.current_line = new i(this), c.push(this.current_line)
					}, this.add_outputline(), this.get_line_number = function() {
						return c.length
					}, this.add_new_line = function(a) {
						return 1 === this.get_line_number() && this.just_added_newline() ? !1 : (a || !this.just_added_newline()) && (this.raw || this.add_outputline(), !0)
					}, this.get_code = function() {
						var a = c.join("\n").replace(/[\r\n\t ]+$/, "");
						return a
					}, this.set_indent = function(a) {
						if(1 < c.length) {
							for(; a >= this.indent_cache.length;) this.indent_cache.push(this.indent_cache[this.indent_cache.length - 1] + this.indent_string);
							return this.current_line.set_indent(a), !0
						}
						return this.current_line.set_indent(0), !1
					}, this.add_raw_token = function(a) {
						for(var b = 0; b < a.newlines; b++) this.add_outputline();
						this.current_line.push(a.whitespace_before), this.current_line.push(a.text), this.space_before_token = !1
					}, this.add_token = function(a) {
						this.add_space_before_token(), this.current_line.push(a)
					}, this.add_space_before_token = function() {
						this.space_before_token && !this.just_added_newline() && this.current_line.push(" "), this.space_before_token = !1
					}, this.remove_redundant_indentation = function(a) {
						if(!a.multiline_frame && a.mode !== o.ForInitializer && a.mode !== o.Conditional)
							for(var b = a.start_line_index, d = c.length; d > b;) c[b].remove_indent(), b++
					}, this.trim = function(d) {
						for(d = void 0 !== d && d, this.current_line.trim(a, b); d && 1 < c.length && this.current_line.is_empty();) c.pop(), this.current_line = c[c.length - 1], this.current_line.trim();
						this.previous_line = 1 < c.length ? c[c.length - 2] : null
					}, this.just_added_newline = function() {
						return this.current_line.is_empty()
					}, this.just_added_blankline = function() {
						if(this.just_added_newline()) {
							if(1 === c.length) return !0;
							var a = c[c.length - 2];
							return a.is_empty()
						}
						return !1
					}
				}

				function k(a, b) {
					function f(a) {
						var b, c;
						if(!a.match(u)) return null;
						for(b = {}, v.lastIndex = 0, c = v.exec(a); c;) b[c[1]] = c[2], c = v.exec(a);
						return b
					}

					function g() {
						var c, g, p, u, v, D, F, E, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, a = [];
						if(y = 0, z = "", g = C.next(), null === g) return ["", "TK_EOF"];
						for(p = B.length ? B[B.length - 1] : new q("TK_START_BLOCK", "{"); d(g, i);)
							if(l.newline.test(g) ? ("\n" !== g || "\r" !== C.peek(-2)) && (y += 1, a = []) : a.push(g), g = C.next(), null === g) return ["", "TK_EOF"];
						if(a.length && (z = a.join("")), j.test(g) || "." === g && C.testChar(j)) {
							for(u = !0, v = !0, D = j, "0" === g && C.testChar(/[XxOoBb]/) ? (u = !1, v = !1, D = C.testChar(/[Bb]/) ? k : C.testChar(/[Oo]/) ? m : n, g += C.next()) : "." === g ? u = !1 : (g = "", C.back()); C.testChar(D);) g += C.next(), u && "." === C.peek() && (g += C.next(), u = !1), v && C.testChar(/[Ee]/) && (g += C.next(), C.testChar(/[+-]/) && (g += C.next()), v = !1, u = !1);
							return [g, "TK_WORD"]
						}
						if(l.isIdentifierStart(C.peekCharCode(-1))) {
							if(C.hasNext())
								for(; l.isIdentifierChar(C.peekCharCode()) && (g += C.next(), !!C.hasNext()););
							return "TK_DOT" === p.type || "TK_RESERVED" === p.type && d(p.text, ["set", "get"]) || !d(g, r) ? [g, "TK_WORD"] : "in" === g || "of" === g ? [g, "TK_OPERATOR"] : [g, "TK_RESERVED"]
						}
						if("(" === g || "[" === g) return [g, "TK_START_EXPR"];
						if(")" === g || "]" === g) return [g, "TK_END_EXPR"];
						if("{" === g) return [g, "TK_START_BLOCK"];
						if("}" === g) return [g, "TK_END_BLOCK"];
						if(";" === g) return [g, "TK_SEMICOLON"];
						if("/" === g) {
							if(E = "", "*" === C.peek()) return C.next(), F = C.match(s), E = "/*" + F[0], G = f(E), G && "start" === G.ignore && (F = C.match(w), E += F[0]), E = E.replace(l.allLineBreaks, "\n"), [E, "TK_BLOCK_COMMENT", G];
							if("/" === C.peek()) return C.next(), F = C.match(t), E = "//" + F[0], [E, "TK_COMMENT"]
						}
						if(H = /<()([-a-zA-Z:0-9_.]+|{[\s\S]+?}|!\[CDATA\[[\s\S]*?\]\])(\s+{[\s\S]+?}|\s+[-a-zA-Z:0-9_.]+|\s+[-a-zA-Z:0-9_.]+\s*=\s*('[^']*'|"[^"]*"|{[\s\S]+?}))*\s*(\/?)\s*>/g, "`" === g || "'" === g || '"' === g || ("/" === g || b.e4x && "<" === g && C.test(H, -1)) && ("TK_RESERVED" === p.type && d(p.text, ["return", "case", "throw", "else", "do", "typeof", "yield"]) || "TK_END_EXPR" === p.type && ")" === p.text && p.parent && "TK_RESERVED" === p.parent.type && d(p.parent.text, ["if", "while", "for"]) || d(p.type, ["TK_COMMENT", "TK_START_EXPR", "TK_START_BLOCK", "TK_END_BLOCK", "TK_OPERATOR", "TK_EQUALS", "TK_EOF", "TK_SEMICOLON", "TK_COMMA"]))) {
							if(I = g, J = !1, K = !1, c = g, "/" == I)
								for(L = !1; C.hasNext() && (J || L || C.peek() !== I) && !C.testChar(l.newline);) c += C.peek(), J ? J = !1 : (J = "\\" === C.peek(), "[" === C.peek() ? L = !0 : "]" === C.peek() && (L = !1)), C.next();
							else if(b.e4x && "<" == I) {
								if(M = /[\s\S]*?<(\/?)([-a-zA-Z:0-9_.]+|{[\s\S]+?}|!\[CDATA\[[\s\S]*?\]\])(\s+{[\s\S]+?}|\s+[-a-zA-Z:0-9_.]+|\s+[-a-zA-Z:0-9_.]+\s*=\s*('[^']*'|"[^"]*"|{[\s\S]+?}))*\s*(\/?)\s*>/g, C.back(), N = "", O = C.match(H), O) {
									for(P = O[2].replace(/^{\s+/, "{").replace(/\s+}$/, "}"), Q = 0 === P.indexOf("{"), R = 0; O && (S = !!O[1], T = O[2], U = !!O[O.length - 1] || "![CDATA[" === T.slice(0, 8), !U && (T === P || Q && T.replace(/^{\s+/, "{").replace(/\s+}$/, "}")) && (S ? --R : ++R), N += O[0], !(0 >= R));) O = C.match(M);
									return O || (N += C.match(/[\s\S]*/g)[0]), N = N.replace(l.allLineBreaks, "\n"), [N, "TK_STRING"]
								}
							} else V = function(a, b, d) {
								for(var e; C.hasNext() && (e = C.peek(), !(!J && (e === a || !b && l.newline.test(e))));)(J || b) && l.newline.test(e) ? ("\r" === e && "\n" === C.peek(1) && (C.next(), e = C.peek()), c += "\n") : c += e, J ? (("x" === e || "u" === e) && (K = !0), J = !1) : J = "\\" === e, C.next(), d && -1 !== c.indexOf(d, c.length - d.length) && ("`" === a ? V("}", b, "`") : V("`", b, "${"), C.hasNext() && (c += C.next()))
							}, "`" == I ? V("`", !0, "${") : V(I);
							if(K && b.unescape_strings && (c = h(c)), C.peek() === I && (c += I, C.next(), "/" == I))
								for(; C.hasNext() && l.isIdentifierStart(C.peekCharCode());) c += C.next();
							return [c, "TK_STRING"]
						}
						if("#" === g) {
							if(0 === B.length && "!" === C.peek()) {
								for(c = g; C.hasNext() && "\n" != g;) g = C.next(), c += g;
								return [e(c) + "\n", "TK_UNKNOWN"]
							}
							if(W = "#", C.hasNext() && C.testChar(j)) {
								do g = C.next(), W += g; while (C.hasNext() && "#" != g && "=" != g);
								return "#" === g || ("[" === C.peek() && "]" === C.peek(1) ? (W += "[]", C.next(), C.next()) : "{" === C.peek() && "}" === C.peek(1) && (W += "{}", C.next(), C.next())), [W, "TK_WORD"]
							}
						}
						if("<" === g && ("?" === C.peek() || "%" === C.peek()) && (C.back(), X = C.match(x))) return g = X[0], g = g.replace(l.allLineBreaks, "\n"), [g, "TK_STRING"];
						if("<" === g && C.match(/\!--/g)) {
							for(g = "<!--"; C.hasNext() && !C.testChar(l.newline);) g += C.next();
							return A = !0, [g, "TK_COMMENT"]
						}
						if("-" === g && A && C.match(/->/g)) return A = !1, ["-->", "TK_COMMENT"];
						if("." === g) return "." === C.peek() && "." === C.peek(1) ? (g += C.next() + C.next(), [g, "TK_OPERATOR"]) : [g, "TK_DOT"];
						if(d(g, o)) {
							for(; C.hasNext() && d(g + C.peek(), o) && (g += C.next(), !!C.hasNext()););
							return "," === g ? [g, "TK_COMMA"] : "=" === g ? [g, "TK_EQUALS"] : [g, "TK_OPERATOR"]
						}
						return [g, "TK_UNKNOWN"]
					}

					function h(a) {
						for(var b = "", d = 0, e = new p(a), f = null; e.hasNext();)
							if(f = e.match(/([\s]|[^\\]|\\\\)+/g), f && (b += f[0]), "\\" === e.peek()) {
								if(e.next(), "x" === e.peek()) f = e.match(/x([0-9A-Fa-f]{2})/g);
								else {
									if("u" !== e.peek()) {
										b += "\\", e.hasNext() && (b += e.next());
										continue
									}
									f = e.match(/u([0-9A-Fa-f]{4})/g)
								}
								if(!f) return a;
								if(d = parseInt(f[1], 16), d > 126 && 255 >= d && 0 === f[0].indexOf("x")) return a;
								if(d >= 0 && 32 > d) {
									b += "\\" + f[0];
									continue
								}
								b += 34 === d || 39 === d || 92 === d ? "\\" + c(d) : c(d)
							}
						return b
					}
					var o, y, z, A, B, C, r, s, t, u, v, w, x, i = "\n\r	 ".split(""),
						j = /[0-9]/,
						k = /[01]/,
						m = /[01234567]/,
						n = /[0123456789abcdefABCDEF]/;
					this.positionable_operators = "!= !== % & && * ** + - / : < << <= == === > >= >> >>> ? ^ | ||".split(" "), o = this.positionable_operators.concat("! %= &= *= **= ++ += , -- -= /= :: <<= = => >>= >>>= ^= |= ~ ...".split(" ")), this.line_starters = "continue,try,throw,return,var,let,const,if,switch,case,default,for,while,break,function,import,export".split(","), r = this.line_starters.concat(["do", "in", "of", "else", "get", "set", "new", "catch", "finally", "typeof", "yield", "async", "await", "from", "as"]), s = /([\s\S]*?)((?:\*\/)|$)/g, t = /([^\n\r\u2028\u2029]*)/g, u = /\/\* beautify( \w+[:]\w+)+ \*\//g, v = / (\w+)[:](\w+)/g, w = /([\s\S]*?)((?:\/\*\sbeautify\signore:end\s\*\/)|$)/g, x = /((<\?php|<\?=)[\s\S]*?\?>)|(<%[\s\S]*?%>)/g, this.tokenize = function() {
						C = new p(a), A = !1, B = [];
						for(var e, f, h, b = null, c = [], d = []; !f || "TK_EOF" !== f.type;) {
							for(h = g(), e = new q(h[1], h[0], y, z);
								"TK_COMMENT" === e.type || "TK_BLOCK_COMMENT" === e.type || "TK_UNKNOWN" === e.type;) "TK_BLOCK_COMMENT" === e.type && (e.directives = h[2]), d.push(e), h = g(), e = new q(h[1], h[0], y, z);
							d.length && (e.comments_before = d, d = []), "TK_START_BLOCK" === e.type || "TK_START_EXPR" === e.type ? (e.parent = f, c.push(b), b = e) : ("TK_END_BLOCK" === e.type || "TK_END_EXPR" === e.type) && b && ("]" === e.text && "[" === b.text || ")" === e.text && "(" === b.text || "}" === e.text && "{" === b.text) && (e.parent = b.parent, e.opened = b, b = c.pop()), B.push(e), f = e
						}
						return B
					}
				}
				var m, n, o, p, q, r, l = {};
				return function(a) {
					var d = /[ªµºÀ-ÖØ-öø-ˁˆ-ˑˠ-ˤˬˮͰ-ʹͶͷͺ-ͽΆΈ-ΊΌΎ-ΡΣ-ϵϷ-ҁҊ-ԧԱ-Ֆՙա-ևא-תװ-ײؠ-يٮٯٱ-ۓەۥۦۮۯۺ-ۼۿܐܒ-ܯݍ-ޥޱߊ-ߪߴߵߺࠀ-ࠕࠚࠤࠨࡀ-ࡘࢠࢢ-ࢬऄ-हऽॐक़-ॡॱ-ॷॹ-ॿঅ-ঌএঐও-নপ-রলশ-হঽৎড়ঢ়য়-ৡৰৱਅ-ਊਏਐਓ-ਨਪ-ਰਲਲ਼ਵਸ਼ਸਹਖ਼-ੜਫ਼ੲ-ੴઅ-ઍએ-ઑઓ-નપ-રલળવ-હઽૐૠૡଅ-ଌଏଐଓ-ନପ-ରଲଳଵ-ହଽଡ଼ଢ଼ୟ-ୡୱஃஅ-ஊஎ-ஐஒ-கஙசஜஞடணதந-பம-ஹௐఅ-ఌఎ-ఐఒ-నప-ళవ-హఽౘౙౠౡಅ-ಌಎ-ಐಒ-ನಪ-ಳವ-ಹಽೞೠೡೱೲഅ-ഌഎ-ഐഒ-ഺഽൎൠൡൺ-ൿඅ-ඖක-නඳ-රලව-ෆก-ะาำเ-ๆກຂຄງຈຊຍດ-ທນ-ຟມ-ຣລວສຫອ-ະາຳຽເ-ໄໆໜ-ໟༀཀ-ཇཉ-ཬྈ-ྌက-ဪဿၐ-ၕၚ-ၝၡၥၦၮ-ၰၵ-ႁႎႠ-ჅჇჍა-ჺჼ-ቈቊ-ቍቐ-ቖቘቚ-ቝበ-ኈኊ-ኍነ-ኰኲ-ኵኸ-ኾዀዂ-ዅወ-ዖዘ-ጐጒ-ጕጘ-ፚᎀ-ᎏᎠ-Ᏼᐁ-ᙬᙯ-ᙿᚁ-ᚚᚠ-ᛪᛮ-ᛰᜀ-ᜌᜎ-ᜑᜠ-ᜱᝀ-ᝑᝠ-ᝬᝮ-ᝰក-ឳៗៜᠠ-ᡷᢀ-ᢨᢪᢰ-ᣵᤀ-ᤜᥐ-ᥭᥰ-ᥴᦀ-ᦫᧁ-ᧇᨀ-ᨖᨠ-ᩔᪧᬅ-ᬳᭅ-ᭋᮃ-ᮠᮮᮯᮺ-ᯥᰀ-ᰣᱍ-ᱏᱚ-ᱽᳩ-ᳬᳮ-ᳱᳵᳶᴀ-ᶿḀ-ἕἘ-Ἕἠ-ὅὈ-Ὅὐ-ὗὙὛὝὟ-ώᾀ-ᾴᾶ-ᾼιῂ-ῄῆ-ῌῐ-ΐῖ-Ίῠ-Ῥῲ-ῴῶ-ῼⁱⁿₐ-ₜℂℇℊ-ℓℕℙ-ℝℤΩℨK-ℭℯ-ℹℼ-ℿⅅ-ⅉⅎⅠ-ↈⰀ-Ⱞⰰ-ⱞⱠ-ⳤⳫ-ⳮⳲⳳⴀ-ⴥⴧⴭⴰ-ⵧⵯⶀ-ⶖⶠ-ⶦⶨ-ⶮⶰ-ⶶⶸ-ⶾⷀ-ⷆⷈ-ⷎⷐ-ⷖⷘ-ⷞⸯ々-〇〡-〩〱-〵〸-〼ぁ-ゖゝ-ゟァ-ヺー-ヿㄅ-ㄭㄱ-ㆎㆠ-ㆺㇰ-ㇿ㐀-䶵一-鿌ꀀ-ꒌꓐ-ꓽꔀ-ꘌꘐ-ꘟꘪꘫꙀ-ꙮꙿ-ꚗꚠ-ꛯꜗ-ꜟꜢ-ꞈꞋ-ꞎꞐ-ꞓꞠ-Ɦꟸ-ꠁꠃ-ꠅꠇ-ꠊꠌ-ꠢꡀ-ꡳꢂ-ꢳꣲ-ꣷꣻꤊ-ꤥꤰ-ꥆꥠ-ꥼꦄ-ꦲꧏꨀ-ꨨꩀ-ꩂꩄ-ꩋꩠ-ꩶꩺꪀ-ꪯꪱꪵꪶꪹ-ꪽꫀꫂꫛ-ꫝꫠ-ꫪꫲ-ꫴꬁ-ꬆꬉ-ꬎꬑ-ꬖꬠ-ꬦꬨ-ꬮꯀ-ꯢ가-힣ힰ-ퟆퟋ-ퟻ豈-舘並-龎ﬀ-ﬆﬓ-ﬗיִײַ-ﬨשׁ-זּטּ-לּמּנּסּףּפּצּ-ﮱﯓ-ﴽﵐ-ﶏﶒ-ﷇﷰ-ﷻﹰ-ﹴﹶ-ﻼＡ-Ｚａ-ｚｦ-ﾾￂ-ￇￊ-ￏￒ-ￗￚ-ￜ]/,
						e = /[ªµºÀ-ÖØ-öø-ˁˆ-ˑˠ-ˤˬˮͰ-ʹͶͷͺ-ͽΆΈ-ΊΌΎ-ΡΣ-ϵϷ-ҁҊ-ԧԱ-Ֆՙա-ևא-תװ-ײؠ-يٮٯٱ-ۓەۥۦۮۯۺ-ۼۿܐܒ-ܯݍ-ޥޱߊ-ߪߴߵߺࠀ-ࠕࠚࠤࠨࡀ-ࡘࢠࢢ-ࢬऄ-हऽॐक़-ॡॱ-ॷॹ-ॿঅ-ঌএঐও-নপ-রলশ-হঽৎড়ঢ়য়-ৡৰৱਅ-ਊਏਐਓ-ਨਪ-ਰਲਲ਼ਵਸ਼ਸਹਖ਼-ੜਫ਼ੲ-ੴઅ-ઍએ-ઑઓ-નપ-રલળવ-હઽૐૠૡଅ-ଌଏଐଓ-ନପ-ରଲଳଵ-ହଽଡ଼ଢ଼ୟ-ୡୱஃஅ-ஊஎ-ஐஒ-கஙசஜஞடணதந-பம-ஹௐఅ-ఌఎ-ఐఒ-నప-ళవ-హఽౘౙౠౡಅ-ಌಎ-ಐಒ-ನಪ-ಳವ-ಹಽೞೠೡೱೲഅ-ഌഎ-ഐഒ-ഺഽൎൠൡൺ-ൿඅ-ඖක-නඳ-රලව-ෆก-ะาำเ-ๆກຂຄງຈຊຍດ-ທນ-ຟມ-ຣລວສຫອ-ະາຳຽເ-ໄໆໜ-ໟༀཀ-ཇཉ-ཬྈ-ྌက-ဪဿၐ-ၕၚ-ၝၡၥၦၮ-ၰၵ-ႁႎႠ-ჅჇჍა-ჺჼ-ቈቊ-ቍቐ-ቖቘቚ-ቝበ-ኈኊ-ኍነ-ኰኲ-ኵኸ-ኾዀዂ-ዅወ-ዖዘ-ጐጒ-ጕጘ-ፚᎀ-ᎏᎠ-Ᏼᐁ-ᙬᙯ-ᙿᚁ-ᚚᚠ-ᛪᛮ-ᛰᜀ-ᜌᜎ-ᜑᜠ-ᜱᝀ-ᝑᝠ-ᝬᝮ-ᝰក-ឳៗៜᠠ-ᡷᢀ-ᢨᢪᢰ-ᣵᤀ-ᤜᥐ-ᥭᥰ-ᥴᦀ-ᦫᧁ-ᧇᨀ-ᨖᨠ-ᩔᪧᬅ-ᬳᭅ-ᭋᮃ-ᮠᮮᮯᮺ-ᯥᰀ-ᰣᱍ-ᱏᱚ-ᱽᳩ-ᳬᳮ-ᳱᳵᳶᴀ-ᶿḀ-ἕἘ-Ἕἠ-ὅὈ-Ὅὐ-ὗὙὛὝὟ-ώᾀ-ᾴᾶ-ᾼιῂ-ῄῆ-ῌῐ-ΐῖ-Ίῠ-Ῥῲ-ῴῶ-ῼⁱⁿₐ-ₜℂℇℊ-ℓℕℙ-ℝℤΩℨK-ℭℯ-ℹℼ-ℿⅅ-ⅉⅎⅠ-ↈⰀ-Ⱞⰰ-ⱞⱠ-ⳤⳫ-ⳮⳲⳳⴀ-ⴥⴧⴭⴰ-ⵧⵯⶀ-ⶖⶠ-ⶦⶨ-ⶮⶰ-ⶶⶸ-ⶾⷀ-ⷆⷈ-ⷎⷐ-ⷖⷘ-ⷞⸯ々-〇〡-〩〱-〵〸-〼ぁ-ゖゝ-ゟァ-ヺー-ヿㄅ-ㄭㄱ-ㆎㆠ-ㆺㇰ-ㇿ㐀-䶵一-鿌ꀀ-ꒌꓐ-ꓽꔀ-ꘌꘐ-ꘟꘪꘫꙀ-ꙮꙿ-ꚗꚠ-ꛯꜗ-ꜟꜢ-ꞈꞋ-ꞎꞐ-ꞓꞠ-Ɦꟸ-ꠁꠃ-ꠅꠇ-ꠊꠌ-ꠢꡀ-ꡳꢂ-ꢳꣲ-ꣷꣻꤊ-ꤥꤰ-ꥆꥠ-ꥼꦄ-ꦲꧏꨀ-ꨨꩀ-ꩂꩄ-ꩋꩠ-ꩶꩺꪀ-ꪯꪱꪵꪶꪹ-ꪽꫀꫂꫛ-ꫝꫠ-ꫪꫲ-ꫴꬁ-ꬆꬉ-ꬎꬑ-ꬖꬠ-ꬦꬨ-ꬮꯀ-ꯢ가-힣ힰ-ퟆퟋ-ퟻ豈-舘並-龎ﬀ-ﬆﬓ-ﬗיִײַ-ﬨשׁ-זּטּ-לּמּנּסּףּפּצּ-ﮱﯓ-ﴽﵐ-ﶏﶒ-ﷇﷰ-ﷻﹰ-ﹴﹶ-ﻼＡ-Ｚａ-ｚｦ-ﾾￂ-ￇￊ-ￏￒ-ￗￚ-ￜ̀-ͯ҃-֑҇-ׇֽֿׁׂׅׄؐ-ؚؠ-ىٲ-ۓۧ-ۨۻ-ۼܰ-݊ࠀ-ࠔࠛ-ࠣࠥ-ࠧࠩ-࠭ࡀ-ࡗࣤ-ࣾऀ-ःऺ-़ा-ॏ॑-ॗॢ-ॣ०-९ঁ-ঃ়া-ৄেৈৗয়-ৠਁ-ਃ਼ਾ-ੂੇੈੋ-੍ੑ੦-ੱੵઁ-ઃ઼ા-ૅે-ૉો-્ૢ-ૣ૦-૯ଁ-ଃ଼ା-ୄେୈୋ-୍ୖୗୟ-ୠ୦-୯ஂா-ூெ-ைொ-்ௗ௦-௯ఁ-ఃె-ైొ-్ౕౖౢ-ౣ౦-౯ಂಃ಼ಾ-ೄೆ-ೈೊ-್ೕೖೢ-ೣ೦-೯ംഃെ-ൈൗൢ-ൣ൦-൯ංඃ්ා-ුූෘ-ෟෲෳิ-ฺเ-ๅ๐-๙ິ-ູ່-ໍ໐-໙༘༙༠-༩༹༵༷ཁ-ཇཱ-྄྆-྇ྍ-ྗྙ-ྼ࿆က-ဩ၀-၉ၧ-ၭၱ-ၴႂ-ႍႏ-ႝ፝-፟ᜎ-ᜐᜠ-ᜰᝀ-ᝐᝲᝳក-ឲ៝០-៩᠋-᠍᠐-᠙ᤠ-ᤫᤰ-᤻ᥑ-ᥭᦰ-ᧀᧈ-ᧉ᧐-᧙ᨀ-ᨕᨠ-ᩓ᩠-᩿᩼-᪉᪐-᪙ᭆ-ᭋ᭐-᭙᭫-᭳᮰-᮹᯦-᯳ᰀ-ᰢ᱀-᱉ᱛ-ᱽ᳐-᳒ᴀ-ᶾḁ-ἕ‌‍‿⁀⁔⃐-⃥⃜⃡-⃰ⶁ-ⶖⷠ-ⷿ〡-〨゙゚Ꙁ-ꙭꙴ-꙽ꚟ꛰-꛱ꟸ-ꠀ꠆ꠋꠣ-ꠧꢀ-ꢁꢴ-꣄꣐-꣙ꣳ-ꣷ꤀-꤉ꤦ-꤭ꤰ-ꥅꦀ-ꦃ꦳-꧀ꨀ-ꨧꩀ-ꩁꩌ-ꩍ꩐-꩙ꩻꫠ-ꫩꫲ-ꫳꯀ-ꯡ꯬꯭꯰-꯹ﬠ-ﬨ︀-️︠-︦︳︴﹍-﹏０-９＿]/;
					a.newline = /[\n\r\u2028\u2029]/, a.lineBreak = new RegExp("\r\n|" + a.newline.source), a.allLineBreaks = new RegExp(a.lineBreak.source, "g"), a.isIdentifierStart = function(a) {
						return 65 > a ? 36 == a || 64 == a : !!(91 > a) || (97 > a ? 95 == a : !!(123 > a) || a >= 170 && d.test(c(a)))
					}, a.isIdentifierChar = function(a) {
						return 48 > a ? 36 == a : !!(58 > a) || !(65 > a) && (!!(91 > a) || (97 > a ? 95 == a : !!(123 > a) || a >= 170 && e.test(c(a))))
					}
				}(l), m = {
					before_newline: "before-newline",
					after_newline: "after-newline",
					preserve_newline: "preserve-newline"
				}, n = [m.before_newline, m.preserve_newline], o = {
					BlockStatement: "BlockStatement",
					Statement: "Statement",
					ObjectLiteral: "ObjectLiteral",
					ArrayLiteral: "ArrayLiteral",
					ForInitializer: "ForInitializer",
					Conditional: "Conditional",
					Expression: "Expression"
				}, p = function(a) {
					var b = a,
						c = b.length,
						d = 0;
					this.back = function() {
						d -= 1
					}, this.hasNext = function() {
						return c > d
					}, this.next = function() {
						var a = null;
						return this.hasNext() && (a = b.charAt(d), d += 1), a
					}, this.peek = function(a) {
						var e = null;
						return a = a || 0, a += d, a >= 0 && c > a && (e = b.charAt(a)), e
					}, this.peekCharCode = function(a) {
						var e = 0;
						return a = a || 0, a += d, a >= 0 && c > a && (e = b.charCodeAt(a)), e
					}, this.test = function(a, c) {
						return c = c || 0, a.lastIndex = d + c, a.test(b)
					}, this.testChar = function(a, b) {
						var c = this.peek(b);
						return null !== c && a.test(c)
					}, this.match = function(a) {
						a.lastIndex = d;
						var c = a.exec(b);
						return c && c.index === d ? d += c[0].length : c = null, c
					}
				}, q = function(a, b, c, d, e) {
					this.type = a, this.text = b, this.comments_before = [], this.comments_after = [], this.newlines = c || 0, this.wanted_newline = c > 0, this.whitespace_before = d || "", this.parent = e || null, this.opened = null, this.directives = null
				}, r = new function(a, b) {
					"use strict";

					function c(a, b) {
						var d, c = 0;
						return a && (c = a.indentation_level, !J.just_added_newline() && a.line_indent_level > c && (c = a.line_indent_level)), d = {
							mode: b,
							parent: a,
							last_text: a ? a.last_text : "",
							last_word: a ? a.last_word : "",
							declaration_statement: !1,
							declaration_assignment: !1,
							multiline_frame: !1,
							inline_frame: !1,
							if_block: !1,
							else_block: !1,
							do_block: !1,
							do_while: !1,
							import_block: !1,
							in_case_statement: !1,
							in_case: !1,
							case_body: !1,
							indentation_level: c,
							line_indent_level: a ? a.line_indent_level : c,
							start_line_index: J.get_line_number(),
							ternary_depth: 0
						}
					}

					function i(a, b) {
						var c, d, e, f, g, h;
						for(c = a.newlines, d = V.keep_array_indentation && x(Q.mode), e = M, f = 0; f < a.comments_before.length; f++) M = a.comments_before[f], i(M, b), U[M.type](b);
						if(M = e, d)
							for(g = 0; c > g; g += 1) r(g > 0, b);
						else if(V.max_preserve_newlines && c > V.max_preserve_newlines && (c = V.max_preserve_newlines), V.preserve_newlines && 1 < a.newlines)
							for(r(!1, b), h = 1; c > h; h += 1) r(!0, b)
					}

					function p(a) {
						a = a.replace(l.allLineBreaks, "\n");
						for(var b = [], c = a.indexOf("\n"); - 1 !== c;) b.push(a.substring(0, c)), a = a.substring(c + 1), c = a.indexOf("\n");
						return a.length && b.push(a), b
					}

					function q(a) {
						var b, c, e, f;
						if(a = void 0 !== a && a, !J.just_added_newline())
							if(b = V.preserve_newlines && M.wanted_newline || a, c = d(Q.last_text, L.positionable_operators) || d(M.text, L.positionable_operators), c && (e = d(Q.last_text, L.positionable_operators) && d(V.operator_position, n) || d(M.text, L.positionable_operators), b = b && e), b) r(!1, !0);
							else if(V.wrap_line_length) {
							if("TK_RESERVED" === N && d(Q.last_text, Y)) return;
							f = J.current_line.get_character_count() + M.text.length + (J.space_before_token ? 1 : 0), f >= V.wrap_line_length && r(!1, !0)
						}
					}

					function r(a, b) {
						if(!b && ";" !== Q.last_text && "," !== Q.last_text && "=" !== Q.last_text && "TK_OPERATOR" !== N)
							for(var c = F(1); !(Q.mode !== o.Statement || Q.if_block && c && "TK_RESERVED" === c.type && "else" === c.text || Q.do_block);) z();
						J.add_new_line(a) && (Q.multiline_frame = !0)
					}

					function s() {
						J.just_added_newline() && (V.keep_array_indentation && x(Q.mode) && M.wanted_newline ? (J.current_line.push(M.whitespace_before), J.space_before_token = !1) : J.set_indent(Q.indentation_level) && (Q.line_indent_level = Q.indentation_level))
					}

					function t(a) {
						if(J.raw) return void J.add_raw_token(M);
						if(V.comma_first && "TK_COMMA" === N && J.just_added_newline() && "," === J.previous_line.last()) {
							var b = J.previous_line.pop();
							J.previous_line.is_empty() && (J.previous_line.push(b), J.trim(!0), J.current_line.pop(), J.trim()), s(), J.add_token(","), J.space_before_token = !0
						}
						a = a || M.text, s(), J.add_token(a)
					}

					function u() {
						Q.indentation_level += 1
					}

					function v() {
						0 < Q.indentation_level && (!Q.parent || Q.indentation_level > Q.parent.indentation_level) && (Q.indentation_level -= 1)
					}

					function w(a) {
						Q ? (S.push(Q), R = Q) : R = c(null, a), Q = c(R, a)
					}

					function x(a) {
						return a === o.ArrayLiteral
					}

					function y(a) {
						return d(a, [o.Expression, o.ForInitializer, o.Conditional])
					}

					function z() {
						0 < S.length && (R = Q, Q = S.pop(), R.mode === o.Statement && J.remove_redundant_indentation(R))
					}

					function A() {
						return Q.parent.mode === o.ObjectLiteral && Q.mode === o.Statement && (":" === Q.last_text && 0 === Q.ternary_depth || "TK_RESERVED" === N && d(Q.last_text, ["get", "set"]))
					}

					function B() {
						return("TK_RESERVED" === N && d(Q.last_text, ["var", "let", "const"]) && "TK_WORD" === M.type || "TK_RESERVED" === N && "do" === Q.last_text || "TK_RESERVED" === N && d(Q.last_text, ["return", "throw"]) && !M.wanted_newline || "TK_RESERVED" === N && "else" === Q.last_text && ("TK_RESERVED" !== M.type || "if" !== M.text || M.comments_before.length) || "TK_END_EXPR" === N && (R.mode === o.ForInitializer || R.mode === o.Conditional) || "TK_WORD" === N && Q.mode === o.BlockStatement && !Q.in_case && "--" !== M.text && "++" !== M.text && "function" !== O && "TK_WORD" !== M.type && "TK_RESERVED" !== M.type || Q.mode === o.ObjectLiteral && (":" === Q.last_text && 0 === Q.ternary_depth || "TK_RESERVED" === N && d(Q.last_text, ["get", "set"]))) && (w(o.Statement), u(), i(M, !0), A() || q("TK_RESERVED" === M.type && d(M.text, ["do", "for", "if", "while"])), !0)
					}

					function C(a, b) {
						for(var d, c = 0; c < a.length; c++)
							if(d = e(a[c]), d.charAt(0) !== b) return !1;
						return !0
					}

					function D(a, b) {
						for(var e, c = 0, d = a.length; d > c; c++)
							if(e = a[c], e && 0 !== e.indexOf(b)) return !1;
						return !0
					}

					function E(a) {
						return d(a, ["case", "return", "do", "if", "throw", "else"])
					}

					function F(a) {
						var b = K + (a || 0);
						return 0 > b || b >= H.length ? null : H[b]
					}

					function G() {
						var a, b;
						if("TK_RESERVED" === M.type && (d(M.text, ["set", "get"]) && Q.mode !== o.ObjectLiteral ? M.type = "TK_WORD" : d(M.text, ["as", "from"]) && !Q.import_block ? M.type = "TK_WORD" : Q.mode === o.ObjectLiteral && (a = F(1), ":" === a.text && (M.type = "TK_WORD"))), B() ? "TK_RESERVED" === N && d(Q.last_text, ["var", "let", "const"]) && "TK_WORD" === M.type && (Q.declaration_statement = !0) : !M.wanted_newline || y(Q.mode) || "TK_OPERATOR" === N && "--" !== Q.last_text && "++" !== Q.last_text || "TK_EQUALS" === N || !V.preserve_newlines && "TK_RESERVED" === N && d(Q.last_text, ["var", "let", "const", "set", "get"]) ? i(M) : (i(M), r()), Q.do_block && !Q.do_while) {
							if("TK_RESERVED" === M.type && "while" === M.text) return J.space_before_token = !0, t(), J.space_before_token = !0, void(Q.do_while = !0);
							r(), Q.do_block = !1
						}
						if(Q.if_block)
							if(Q.else_block || "TK_RESERVED" !== M.type || "else" !== M.text) {
								for(; Q.mode === o.Statement;) z();
								Q.if_block = !1, Q.else_block = !1
							} else Q.else_block = !0;
						return "TK_RESERVED" === M.type && ("case" === M.text || "default" === M.text && Q.in_case_statement) ? (r(), (Q.case_body || V.jslint_happy) && (v(), Q.case_body = !1), t(), Q.in_case = !0, void(Q.in_case_statement = !0)) : ("TK_COMMA" !== N && "TK_START_EXPR" !== N && "TK_EQUALS" !== N && "TK_OPERATOR" !== N || A() || q(), "TK_RESERVED" === M.type && "function" === M.text ? (!d(Q.last_text, ["}", ";"]) && (!J.just_added_newline() || d(Q.last_text, ["(", "[", "{", ":", "=", ","]) || "TK_OPERATOR" === N) || J.just_added_blankline() || M.comments_before.length || (r(), r(!0)), "TK_RESERVED" === N || "TK_WORD" === N ? "TK_RESERVED" === N && d(Q.last_text, ["get", "set", "new", "return", "export", "async"]) ? J.space_before_token = !0 : "TK_RESERVED" === N && "default" === Q.last_text && "export" === O ? J.space_before_token = !0 : r() : "TK_OPERATOR" === N || "=" === Q.last_text ? J.space_before_token = !0 : !Q.multiline_frame && (y(Q.mode) || x(Q.mode)) || r(), t(), void(Q.last_word = M.text)) : (T = "NONE", "TK_END_BLOCK" === N ? R.inline_frame ? T = "SPACE" : "TK_RESERVED" === M.type && d(M.text, ["else", "catch", "finally", "from"]) ? "expand" === V.brace_style || "end-expand" === V.brace_style || "none" === V.brace_style && M.wanted_newline ? T = "NEWLINE" : (T = "SPACE", J.space_before_token = !0) : T = "NEWLINE" : "TK_SEMICOLON" === N && Q.mode === o.BlockStatement ? T = "NEWLINE" : "TK_SEMICOLON" === N && y(Q.mode) ? T = "SPACE" : "TK_STRING" === N ? T = "NEWLINE" : "TK_RESERVED" === N || "TK_WORD" === N || "*" === Q.last_text && (d(O, ["function", "yield"]) || Q.mode === o.ObjectLiteral && d(O, ["{", ","])) ? T = "SPACE" : "TK_START_BLOCK" === N ? T = Q.inline_frame ? "SPACE" : "NEWLINE" : "TK_END_EXPR" === N && (J.space_before_token = !0, T = "NEWLINE"), "TK_RESERVED" === M.type && d(M.text, L.line_starters) && ")" !== Q.last_text && (T = Q.inline_frame || "else" === Q.last_text || "export" === Q.last_text ? "SPACE" : "NEWLINE"), "TK_RESERVED" === M.type && d(M.text, ["else", "catch", "finally"]) ? ("TK_END_BLOCK" !== N || R.mode !== o.BlockStatement || "expand" === V.brace_style || "end-expand" === V.brace_style || "none" === V.brace_style && M.wanted_newline) && !Q.inline_frame ? r() : (J.trim(!0), b = J.current_line, "}" !== b.last() && r(), J.space_before_token = !0) : "NEWLINE" === T ? "TK_RESERVED" === N && E(Q.last_text) ? J.space_before_token = !0 : "TK_END_EXPR" === N ? "TK_RESERVED" === M.type && d(M.text, L.line_starters) && ")" !== Q.last_text && r() : !("TK_START_EXPR" === N && "TK_RESERVED" === M.type && d(M.text, ["var", "let", "const"]) || ":" === Q.last_text || !("TK_RESERVED" === M.type && "if" === M.text && "else" === Q.last_text ? J.space_before_token = !0 : r())) : Q.multiline_frame && x(Q.mode) && "," === Q.last_text && "}" === O ? r() : "SPACE" === T && (J.space_before_token = !0), t(), Q.last_word = M.text, "TK_RESERVED" === M.type && ("do" === M.text ? Q.do_block = !0 : "if" === M.text ? Q.if_block = !0 : "import" === M.text ? Q.import_block = !0 : Q.import_block && "TK_RESERVED" === M.type && "from" === M.text && (Q.import_block = !1)), void 0))
					}
					var J, K, L, M, N, O, P, Q, R, S, T, V, W, X, Y, H = [],
						I = "",
						U = {
							TK_START_EXPR: function() {
								B() || i(M);
								var a = o.Expression;
								if("[" === M.text) {
									if("TK_WORD" === N || ")" === Q.last_text) return "TK_RESERVED" === N && d(Q.last_text, L.line_starters) && (J.space_before_token = !0), w(a), t(), u(), void(V.space_in_paren && (J.space_before_token = !0));
									a = o.ArrayLiteral, x(Q.mode) && ("[" === Q.last_text || "," === Q.last_text && ("]" === O || "}" === O)) && !V.keep_array_indentation && r()
								} else "TK_RESERVED" === N && "for" === Q.last_text ? a = o.ForInitializer : "TK_RESERVED" === N && d(Q.last_text, ["if", "while"]) && (a = o.Conditional);
								";" === Q.last_text || "TK_START_BLOCK" === N ? r() : "TK_END_EXPR" === N || "TK_START_EXPR" === N || "TK_END_BLOCK" === N || "." === Q.last_text ? q(M.wanted_newline) : "TK_RESERVED" === N && "(" === M.text || "TK_WORD" === N || "TK_OPERATOR" === N ? "TK_RESERVED" === N && ("function" === Q.last_word || "typeof" === Q.last_word) || "*" === Q.last_text && (d(O, ["function", "yield"]) || Q.mode === o.ObjectLiteral && d(O, ["{", ","])) ? V.space_after_anon_function && (J.space_before_token = !0) : "TK_RESERVED" === N && (d(Q.last_text, L.line_starters) || "catch" === Q.last_text) && V.space_before_conditional && (J.space_before_token = !0) : J.space_before_token = !0, "(" === M.text && "TK_RESERVED" === N && "await" === Q.last_word && (J.space_before_token = !0), "(" !== M.text || "TK_EQUALS" !== N && "TK_OPERATOR" !== N || A() || q(), "(" === M.text && "TK_WORD" !== N && "TK_RESERVED" !== N && q(), w(a), t(), V.space_in_paren && (J.space_before_token = !0), u()
							},
							TK_END_EXPR: function() {
								for(; Q.mode === o.Statement;) z();
								i(M), Q.multiline_frame && q("]" === M.text && x(Q.mode) && !V.keep_array_indentation), V.space_in_paren && ("TK_START_EXPR" !== N || V.space_in_empty_paren ? J.space_before_token = !0 : (J.trim(), J.space_before_token = !1)), "]" === M.text && V.keep_array_indentation ? (t(), z()) : (z(), t()), J.remove_redundant_indentation(R), Q.do_while && R.mode === o.Conditional && (R.mode = o.Expression, Q.do_block = !1, Q.do_while = !1)
							},
							TK_START_BLOCK: function() {
								var a, b, c, e, f, g;
								if(i(M), a = F(1), b = F(2), b && (d(b.text, [":", ","]) && d(a.type, ["TK_STRING", "TK_WORD", "TK_RESERVED"]) || d(a.text, ["get", "set", "..."]) && d(b.type, ["TK_WORD", "TK_RESERVED"])) ? d(O, ["class", "interface"]) ? w(o.BlockStatement) : w(o.ObjectLiteral) : "TK_OPERATOR" === N && "=>" === Q.last_text ? w(o.BlockStatement) : d(N, ["TK_EQUALS", "TK_START_EXPR", "TK_COMMA", "TK_OPERATOR"]) || "TK_RESERVED" === N && d(Q.last_text, ["return", "throw", "import", "default"]) ? w(o.ObjectLiteral) : w(o.BlockStatement), c = !a.comments_before.length && "}" === a.text, e = c && "function" === Q.last_word && "TK_END_EXPR" === N, V.brace_preserve_inline) {
									f = 0, g = null, Q.inline_frame = !0;
									do
										if(f += 1, g = F(f), g.wanted_newline) {
											Q.inline_frame = !1;
											break
										}
									while("TK_EOF" !== g.type && ("TK_END_BLOCK" !== g.type || g.opened !== M))
								}("expand" === V.brace_style || "none" === V.brace_style && M.wanted_newline) && !Q.inline_frame ? "TK_OPERATOR" !== N && (e || "TK_EQUALS" === N || "TK_RESERVED" === N && E(Q.last_text) && "else" !== Q.last_text) ? J.space_before_token = !0 : r(!1, !0) : (x(R.mode) && ("TK_START_EXPR" === N || "TK_COMMA" === N) && (("TK_COMMA" === N || V.space_in_paren) && (J.space_before_token = !0), ("TK_COMMA" === N || "TK_START_EXPR" === N && Q.inline_frame) && (q(), R.multiline_frame = R.multiline_frame || Q.multiline_frame, Q.multiline_frame = !1)), "TK_OPERATOR" !== N && "TK_START_EXPR" !== N && ("TK_START_BLOCK" !== N || Q.inline_frame ? J.space_before_token = !0 : r())), t(), u()
							},
							TK_END_BLOCK: function() {
								for(i(M); Q.mode === o.Statement;) z();
								var a = "TK_START_BLOCK" === N;
								Q.inline_frame && !a ? J.space_before_token = !0 : "expand" === V.brace_style ? !a && r() : !a && (x(Q.mode) && V.keep_array_indentation ? (V.keep_array_indentation = !1, r(), V.keep_array_indentation = !0) : r()), z(), t()
							},
							TK_WORD: G,
							TK_RESERVED: G,
							TK_SEMICOLON: function() {
								B() ? J.space_before_token = !1 : i(M);
								for(var a = F(1); !(Q.mode !== o.Statement || Q.if_block && a && "TK_RESERVED" === a.type && "else" === a.text || Q.do_block);) z();
								Q.import_block && (Q.import_block = !1), t()
							},
							TK_STRING: function() {
								B() ? J.space_before_token = !0 : (i(M), "TK_RESERVED" === N || "TK_WORD" === N || Q.inline_frame ? J.space_before_token = !0 : "TK_COMMA" === N || "TK_START_EXPR" === N || "TK_EQUALS" === N || "TK_OPERATOR" === N ? !A() && q() : r()), t()
							},
							TK_EQUALS: function() {
								B() || i(M), Q.declaration_statement && (Q.declaration_assignment = !0), J.space_before_token = !0, t(), J.space_before_token = !0
							},
							TK_OPERATOR: function() {
								var c, e, f, g, h, j, k, a = "*" === M.text && ("TK_RESERVED" === N && d(Q.last_text, ["function", "yield"]) || d(N, ["TK_START_BLOCK", "TK_COMMA", "TK_END_BLOCK", "TK_SEMICOLON"])),
									b = d(M.text, ["-", "+"]) && (d(N, ["TK_START_BLOCK", "TK_START_EXPR", "TK_EQUALS", "TK_OPERATOR"]) || d(Q.last_text, L.line_starters) || "," === Q.last_text);
								if(B() || i(M, !a), "TK_RESERVED" === N && E(Q.last_text)) return J.space_before_token = !0, void t();
								if("*" === M.text && "TK_DOT" === N) return void t();
								if("::" === M.text) return void t();
								if("TK_OPERATOR" === N && d(V.operator_position, n) && q(), ":" === M.text && Q.in_case) return Q.case_body = !0, u(), t(), r(), void(Q.in_case = !1);
								if(c = !0, e = !0, f = !1, ":" === M.text ? 0 === Q.ternary_depth ? c = !1 : (Q.ternary_depth -= 1, f = !0) : "?" === M.text && (Q.ternary_depth += 1), !b && !a && V.preserve_newlines && d(M.text, L.positionable_operators)) switch(g = ":" === M.text, h = g && f, j = g && !f, V.operator_position) {
									case m.before_newline:
										return J.space_before_token = !j, t(), (!g || h) && q(), void(J.space_before_token = !0);
									case m.after_newline:
										return J.space_before_token = !0, !g || h ? F(1).wanted_newline ? r(!1, !0) : q() : J.space_before_token = !1, t(), void(J.space_before_token = !0);
									case m.preserve_newline:
										return j || q(), c = !(J.just_added_newline() || j), J.space_before_token = c, t(), void(J.space_before_token = !0)
								}
								a ? (q(), c = !1, k = F(1), e = k && d(k.type, ["TK_WORD", "TK_RESERVED"])) : "..." === M.text ? (q(), c = "TK_START_BLOCK" == N, e = !1) : (d(M.text, ["--", "++", "!", "~"]) || b) && (c = !1, e = !1, M.wanted_newline && ("--" === M.text || "++" === M.text) && r(!1, !0), ";" === Q.last_text && y(Q.mode) && (c = !0), "TK_RESERVED" === N ? c = !0 : "TK_END_EXPR" === N ? c = "]" !== Q.last_text || "--" !== M.text && "++" !== M.text : "TK_OPERATOR" === N && (c = d(M.text, ["--", "-", "++", "+"]) && d(Q.last_text, ["--", "-", "++", "+"]), d(M.text, ["+", "-"]) && d(Q.last_text, ["--", "++"]) && (e = !0)), (Q.mode !== o.BlockStatement || Q.inline_frame) && Q.mode !== o.Statement || "{" !== Q.last_text && ";" !== Q.last_text || r()), J.space_before_token = J.space_before_token || c, t(), J.space_before_token = e
							},
							TK_COMMA: function() {
								i(M, !0), t(), J.space_before_token = !0, Q.declaration_statement ? (y(Q.parent.mode) && (Q.declaration_assignment = !1), Q.declaration_assignment ? (Q.declaration_assignment = !1, r(!1, !0)) : V.comma_first && q()) : Q.mode === o.ObjectLiteral || Q.mode === o.Statement && Q.parent.mode === o.ObjectLiteral ? (Q.mode === o.Statement && z(), !Q.inline_frame && r()) : V.comma_first && q()
							},
							TK_BLOCK_COMMENT: function(a) {
								if(J.raw) return J.add_raw_token(M), void(M.directives && "end" === M.directives.preserve && (J.raw = V.test_output_raw));
								if(M.directives) return r(!1, a), t(), "start" === M.directives.preserve && (J.raw = !0), void r(!1, !0);
								if(!l.newline.test(M.text) && !M.wanted_newline) return J.space_before_token = !0, t(), void(J.space_before_token = !0);
								var h, b = p(M.text),
									c = !1,
									d = !1,
									e = M.whitespace_before,
									f = e.length;
								for(r(!1, a), 1 < b.length && (c = C(b.slice(1), "*"), d = D(b.slice(1), e)), t(b[0]), h = 1; h < b.length; h++) r(!1, !0), c ? t(" " + g(b[h])) : d && b[h].length > f ? t(b[h].substring(f)) : J.add_token(b[h]);
								r(!1, a)
							},
							TK_COMMENT: function(a) {
								M.wanted_newline ? r(!1, a) : J.trim(!0), J.space_before_token = !0, t(), r(!1, a)
							},
							TK_DOT: function() {
								B() || i(M, !0), "TK_RESERVED" === N && E(Q.last_text) ? J.space_before_token = !0 : q(")" === Q.last_text && V.break_chained_methods), t()
							},
							TK_UNKNOWN: function(a) {
								t(), "\n" === M.text[M.text.length - 1] && r(!1, a)
							},
							TK_EOF: function() {
								for(; Q.mode === o.Statement;) z();
								i(M)
							}
						};
					for(b = b ? b : {}, b = f(b, "js"), V = {}, "expand-strict" === b.brace_style ? b.brace_style = "expand" : "collapse-preserve-inline" === b.brace_style ? b.brace_style = "collapse,preserve-inline" : void 0 === b.braces_on_own_line ? !b.brace_style && (b.brace_style = "collapse") : b.brace_style = b.braces_on_own_line ? "expand" : "collapse", W = b.brace_style.split(/[^a-zA-Z0-9_\-]+/), V.brace_style = W[0], V.brace_preserve_inline = !!W[1] && W[1], V.indent_size = b.indent_size ? parseInt(b.indent_size, 10) : 4, V.indent_char = b.indent_char ? b.indent_char : " ", V.eol = b.eol ? b.eol : "auto", V.preserve_newlines = void 0 === b.preserve_newlines || b.preserve_newlines, V.break_chained_methods = void 0 !== b.break_chained_methods && b.break_chained_methods, V.max_preserve_newlines = void 0 === b.max_preserve_newlines ? 0 : parseInt(b.max_preserve_newlines, 10), V.space_in_paren = void 0 !== b.space_in_paren && b.space_in_paren, V.space_in_empty_paren = void 0 !== b.space_in_empty_paren && b.space_in_empty_paren, V.jslint_happy = void 0 !== b.jslint_happy && b.jslint_happy, V.space_after_anon_function = void 0 !== b.space_after_anon_function && b.space_after_anon_function, V.keep_array_indentation = void 0 !== b.keep_array_indentation && b.keep_array_indentation, V.space_before_conditional = void 0 === b.space_before_conditional || b.space_before_conditional, V.unescape_strings = void 0 !== b.unescape_strings && b.unescape_strings, V.wrap_line_length = void 0 === b.wrap_line_length ? 0 : parseInt(b.wrap_line_length, 10), V.e4x = void 0 !== b.e4x && b.e4x, V.end_with_newline = void 0 !== b.end_with_newline && b.end_with_newline, V.comma_first = void 0 !== b.comma_first && b.comma_first, V.operator_position = h(b.operator_position), V.test_output_raw = void 0 !== b.test_output_raw && b.test_output_raw, V.jslint_happy && (V.space_after_anon_function = !0), b.indent_with_tabs && (V.indent_char = "	", V.indent_size = 1), "auto" === V.eol && (V.eol = "\n", a && l.lineBreak.test(a || "") && (V.eol = a.match(l.lineBreak)[0])), V.eol = V.eol.replace(/\\r/, "\r").replace(/\\n/, "\n"), P = ""; 0 < V.indent_size;) P += V.indent_char, V.indent_size -= 1;
					if(X = 0, a && a.length) {
						for(;
							" " === a.charAt(X) || "	" === a.charAt(X);) I += a.charAt(X), X += 1;
						a = a.substring(X)
					}
					N = "TK_START_BLOCK", O = "", J = new j(P, I), J.raw = V.test_output_raw, S = [], w(o.BlockStatement), this.beautify = function() {
						var b;
						for(L = new k(a, V, P), H = L.tokenize(), K = 0, M = F(); M;) U[M.type](), O = Q.last_text, N = M.type, Q.last_text = M.text, K += 1, M = F();
						return b = J.get_code(), V.end_with_newline && (b += "\n"), "\n" !== V.eol && (b = b.replace(/[\n]/g, V.eol)), b
					}, Y = ["break", "continue", "return", "throw"]
				}(a, b), r.beautify()
			}
			d = [], e = function() {
				return {
					js_beautify: g
				}
			}.apply(b, d), !(void 0 !== e && (a.exports = e))
		}()
}, function(a, b, c) {
	! function(b) {
		var c = function() {
			var a = !0,
				c = !1,
				d = {},
				e = function() {
					"use strict";
					var j, k, l, m, a = {
							'"': '"',
							"\\": "\\",
							"/": "/",
							b: "\b",
							f: "\f",
							n: "\n",
							r: "\r",
							t: "	"
						},
						b = function(a) {
							throw {
								name: "SyntaxError",
								message: a,
								at: j,
								text: l
							}
						},
						c = function(a) {
							return a && a !== k && b("Expected '" + a + "' instead of '" + k + "'"), k = l.charAt(j), j += 1, k
						},
						d = function() {
							var d, a = "";
							for("-" === k && (a = "-", c("-")); k >= "0" && "9" >= k;) a += k, c();
							if("." === k)
								for(a += "."; c() && k >= "0" && "9" >= k;) a += k;
							if("e" === k || "E" === k)
								for(a += k, c(), ("-" === k || "+" === k) && (a += k, c()); k >= "0" && "9" >= k;) a += k, c();
							return d = +a, isFinite(d) ? d : void b("Bad number")
						},
						e = function() {
							var e, f, g, d = "";
							if('"' === k)
								for(; c();) {
									if('"' === k) return c(), d;
									if("\\" !== k) d += k;
									else if(c(), "u" === k) {
										for(g = 0, f = 0; 4 > f && (e = parseInt(c(), 16), !!isFinite(e)); f += 1) g = 16 * g + e;
										d += String.fromCharCode(g)
									} else {
										if("string" != typeof a[k]) break;
										d += a[k]
									}
								}
							b("Bad string")
						},
						f = function() {
							for(; k && " " >= k;) c()
						},
						g = function() {
							switch(k) {
								case "t":
									return c("t"), c("r"), c("u"), c("e"), !0;
								case "f":
									return c("f"), c("a"), c("l"), c("s"), c("e"), !1;
								case "n":
									return c("n"), c("u"), c("l"), c("l"), null
							}
							b("Unexpected '" + k + "'")
						},
						h = function() {
							var a = [];
							if("[" === k) {
								if(c("["), f(), "]" === k) return c("]"), a;
								for(; k;) {
									if(a.push(m()), f(), "]" === k) return c("]"), a;
									c(","), f()
								}
							}
							b("Bad array")
						},
						i = function() {
							var d, a = {};
							if("{" === k) {
								if(c("{"), f(), "}" === k) return c("}"), a;
								for(; k;) {
									if(d = e(), f(), c(":"), Object.hasOwnProperty.call(a, d) && b("Duplicate key '" + d + "'"), a[d] = m(), f(), "}" === k) return c("}"), a;
									c(","), f()
								}
							}
							b("Bad object")
						};
					return m = function() {
							return f(), "{" === k ? i() : "[" === k ? h() : '"' === k ? e() : "-" === k ? d() : k >= "0" && "9" >= k ? d() : g()
						},
						function(a, c) {
							var d;
							return l = a, j = 0, k = " ", d = m(), f(), k && b("Syntax error"), "function" == typeof c ? function e(a, b) {
								var f, g, d = a[b];
								if(d && "object" == typeof d)
									for(f in d) Object.prototype.hasOwnProperty.call(d, f) && (g = e(d, f), void 0 === g ? delete d[f] : d[f] = g);
								return c.call(a, b, d)
							}({
								"": d
							}, "") : d
						}
				}(),
				f = function() {
					var a = {
							trace: function() {},
							yy: {},
							symbols_: {
								error: 2,
								JSONString: 3,
								STRING: 4,
								JSONNumber: 5,
								NUMBER: 6,
								JSONNullLiteral: 7,
								NULL: 8,
								JSONBooleanLiteral: 9,
								TRUE: 10,
								FALSE: 11,
								JSONText: 12,
								JSONValue: 13,
								EOF: 14,
								JSONObject: 15,
								JSONArray: 16,
								"{": 17,
								"}": 18,
								JSONMemberList: 19,
								JSONMember: 20,
								":": 21,
								",": 22,
								"[": 23,
								"]": 24,
								JSONElementList: 25,
								$accept: 0,
								$end: 1
							},
							terminals_: {
								2: "error",
								4: "STRING",
								6: "NUMBER",
								8: "NULL",
								10: "TRUE",
								11: "FALSE",
								14: "EOF",
								17: "{",
								18: "}",
								21: ":",
								22: ",",
								23: "[",
								24: "]"
							},
							productions_: [0, [3, 1],
								[5, 1],
								[7, 1],
								[9, 1],
								[9, 1],
								[12, 2],
								[13, 1],
								[13, 1],
								[13, 1],
								[13, 1],
								[13, 1],
								[13, 1],
								[15, 2],
								[15, 3],
								[20, 3],
								[19, 1],
								[19, 3],
								[16, 2],
								[16, 3],
								[25, 1],
								[25, 3]
							],
							performAction: function(a, b, c, d, e, f) {
								var g = f.length - 1;
								switch(e) {
									case 1:
										this.$ = a.replace(/\\(\\|")/g, "$1").replace(/\\n/g, "\n").replace(/\\r/g, "\r").replace(/\\t/g, "	").replace(/\\v/g, "").replace(/\\f/g, "\f").replace(/\\b/g, "\b");
										break;
									case 2:
										this.$ = +a;
										break;
									case 3:
										this.$ = null;
										break;
									case 4:
										this.$ = !0;
										break;
									case 5:
										this.$ = !1;
										break;
									case 6:
										return this.$ = f[g - 1];
									case 13:
										this.$ = {};
										break;
									case 14:
										this.$ = f[g - 1];
										break;
									case 15:
										this.$ = [f[g - 2], f[g]];
										break;
									case 16:
										this.$ = {}, this.$[f[g][0]] = f[g][1];
										break;
									case 17:
										this.$ = f[g - 2], f[g - 2][f[g][0]] = f[g][1];
										break;
									case 18:
										this.$ = [];
										break;
									case 19:
										this.$ = f[g - 1];
										break;
									case 20:
										this.$ = [f[g]];
										break;
									case 21:
										this.$ = f[g - 2], f[g - 2].push(f[g])
								}
							},
							table: [{
								3: 5,
								4: [1, 12],
								5: 6,
								6: [1, 13],
								7: 3,
								8: [1, 9],
								9: 4,
								10: [1, 10],
								11: [1, 11],
								12: 1,
								13: 2,
								15: 7,
								16: 8,
								17: [1, 14],
								23: [1, 15]
							}, {
								1: [3]
							}, {
								14: [1, 16]
							}, {
								14: [2, 7],
								18: [2, 7],
								22: [2, 7],
								24: [2, 7]
							}, {
								14: [2, 8],
								18: [2, 8],
								22: [2, 8],
								24: [2, 8]
							}, {
								14: [2, 9],
								18: [2, 9],
								22: [2, 9],
								24: [2, 9]
							}, {
								14: [2, 10],
								18: [2, 10],
								22: [2, 10],
								24: [2, 10]
							}, {
								14: [2, 11],
								18: [2, 11],
								22: [2, 11],
								24: [2, 11]
							}, {
								14: [2, 12],
								18: [2, 12],
								22: [2, 12],
								24: [2, 12]
							}, {
								14: [2, 3],
								18: [2, 3],
								22: [2, 3],
								24: [2, 3]
							}, {
								14: [2, 4],
								18: [2, 4],
								22: [2, 4],
								24: [2, 4]
							}, {
								14: [2, 5],
								18: [2, 5],
								22: [2, 5],
								24: [2, 5]
							}, {
								14: [2, 1],
								18: [2, 1],
								21: [2, 1],
								22: [2, 1],
								24: [2, 1]
							}, {
								14: [2, 2],
								18: [2, 2],
								22: [2, 2],
								24: [2, 2]
							}, {
								3: 20,
								4: [1, 12],
								18: [1, 17],
								19: 18,
								20: 19
							}, {
								3: 5,
								4: [1, 12],
								5: 6,
								6: [1, 13],
								7: 3,
								8: [1, 9],
								9: 4,
								10: [1, 10],
								11: [1, 11],
								13: 23,
								15: 7,
								16: 8,
								17: [1, 14],
								23: [1, 15],
								24: [1, 21],
								25: 22
							}, {
								1: [2, 6]
							}, {
								14: [2, 13],
								18: [2, 13],
								22: [2, 13],
								24: [2, 13]
							}, {
								18: [1, 24],
								22: [1, 25]
							}, {
								18: [2, 16],
								22: [2, 16]
							}, {
								21: [1, 26]
							}, {
								14: [2, 18],
								18: [2, 18],
								22: [2, 18],
								24: [2, 18]
							}, {
								22: [1, 28],
								24: [1, 27]
							}, {
								22: [2, 20],
								24: [2, 20]
							}, {
								14: [2, 14],
								18: [2, 14],
								22: [2, 14],
								24: [2, 14]
							}, {
								3: 20,
								4: [1, 12],
								20: 29
							}, {
								3: 5,
								4: [1, 12],
								5: 6,
								6: [1, 13],
								7: 3,
								8: [1, 9],
								9: 4,
								10: [1, 10],
								11: [1, 11],
								13: 30,
								15: 7,
								16: 8,
								17: [1, 14],
								23: [1, 15]
							}, {
								14: [2, 19],
								18: [2, 19],
								22: [2, 19],
								24: [2, 19]
							}, {
								3: 5,
								4: [1, 12],
								5: 6,
								6: [1, 13],
								7: 3,
								8: [1, 9],
								9: 4,
								10: [1, 10],
								11: [1, 11],
								13: 31,
								15: 7,
								16: 8,
								17: [1, 14],
								23: [1, 15]
							}, {
								18: [2, 17],
								22: [2, 17]
							}, {
								18: [2, 15],
								22: [2, 15]
							}, {
								22: [2, 21],
								24: [2, 21]
							}],
							defaultActions: {
								16: [2, 6]
							},
							parseError: function(a) {
								throw new Error(a)
							},
							parse: function(a) {
								function b(a) {
									e.length -= 2 * a, f.length -= a, g.length -= a
								}

								function c() {
									var a;
									return a = d.lexer.lex() || 1, "number" != typeof a && (a = d.symbols_[a] || a), a
								}
								var n, p, q, r, s, t, u, v, w, x, o, y, d = this,
									e = [0],
									f = [null],
									g = [],
									h = this.table,
									i = "",
									j = 0,
									k = 0,
									l = 0,
									m = 2;
								for(this.lexer.setInput(a), this.lexer.yy = this.yy, this.yy.lexer = this.lexer, "undefined" == typeof this.lexer.yylloc && (this.lexer.yylloc = {}), n = this.lexer.yylloc, g.push(n), "function" == typeof this.yy.parseError && (this.parseError = this.yy.parseError), o = {};;) {
									if(r = e[e.length - 1], this.defaultActions[r] ? s = this.defaultActions[r] : (null == p && (p = c()), s = h[r] && h[r][p]), "undefined" == typeof s || !s.length || !s[0]) {
										if(!l) {
											for(u in x = [], h[r]) this.terminals_[u] && u > 2 && x.push("'" + this.terminals_[u] + "'");
											y = "", y = this.lexer.showPosition ? "第" + (j + 1) + "行解析错误:\n" + this.lexer.showPosition() + "\n期望是 " + x.join(", ") : "第" + (j + 1) + "行解析错误: 不应该以" + (1 == p ? "作为结尾" : "'" + (this.terminals_[p] || p) + "'"), this.parseError(y, {
												text: this.lexer.match,
												token: this.terminals_[p] || p,
												line: this.lexer.yylineno,
												loc: n,
												expected: x
											})
										}
										if(3 == l) {
											if(1 == p) throw new Error(y || "Parsing halted.");
											k = this.lexer.yyleng, i = this.lexer.yytext, j = this.lexer.yylineno, n = this.lexer.yylloc, p = c()
										}
										for(; !(m.toString() in h[r]);) {
											if(0 == r) throw new Error(y || "Parsing halted.");
											b(1), r = e[e.length - 1]
										}
										q = p, p = m, r = e[e.length - 1], s = h[r] && h[r][m], l = 3
									}
									if(s[0] instanceof Array && 1 < s.length) throw new Error("Parse Error: multiple actions possible at state: " + r + ", token: " + p);
									switch(s[0]) {
										case 1:
											e.push(p), f.push(this.lexer.yytext), g.push(this.lexer.yylloc), e.push(s[1]), p = null, q ? (p = q, q = null) : (k = this.lexer.yyleng, i = this.lexer.yytext, j = this.lexer.yylineno, n = this.lexer.yylloc, l > 0 && l--);
											break;
										case 2:
											if(v = this.productions_[s[1]][1], o.$ = f[f.length - v], o._$ = {
													first_line: g[g.length - (v || 1)].first_line,
													last_line: g[g.length - 1].last_line,
													first_column: g[g.length - (v || 1)].first_column,
													last_column: g[g.length - 1].last_column
												}, t = this.performAction.call(o, i, k, j, this.yy, s[1], f, g), "undefined" != typeof t) return t;
											v && (e = e.slice(0, 2 * -1 * v), f = f.slice(0, -1 * v), g = g.slice(0, -1 * v)), e.push(this.productions_[s[1]][0]), f.push(o.$), g.push(o._$), w = h[e[e.length - 2]][e[e.length - 1]], e.push(w);
											break;
										case 3:
											return !0
									}
								}
								return !0
							}
						},
						b = function() {
							var a = {
								EOF: 1,
								parseError: function(a, b) {
									if(!this.yy.parseError) throw new Error(a);
									this.yy.parseError(a, b)
								},
								setInput: function(a) {
									return this._input = a, this._more = this._less = this.done = !1, this.yylineno = this.yyleng = 0, this.yytext = this.matched = this.match = "", this.conditionStack = ["INITIAL"], this.yylloc = {
										first_line: 1,
										first_column: 0,
										last_line: 1,
										last_column: 0
									}, this
								},
								input: function() {
									var b, a = this._input[0];
									return this.yytext += a, this.yyleng++, this.match += a, this.matched += a, b = a.match(/\n/), b && this.yylineno++, this._input = this._input.slice(1), a
								},
								unput: function(a) {
									return this._input = a + this._input, this
								},
								more: function() {
									return this._more = !0, this
								},
								less: function(a) {
									this._input = this.match.slice(a) + this._input
								},
								pastInput: function() {
									var a = this.matched.substr(0, this.matched.length - this.match.length);
									return(20 < a.length ? "..." : "") + a.substr(-20).replace(/\n/g, "")
								},
								upcomingInput: function() {
									var a = this.match;
									return 20 > a.length && (a += this._input.substr(0, 20 - a.length)), (a.substr(0, 20) + (20 < a.length ? "..." : "")).replace(/\n/g, "")
								},
								showPosition: function() {
									var a = this.pastInput(),
										b = Array(a.length + 1).join("-");
									return a + this.upcomingInput() + "\n" + b + "^"
								},
								next: function() {
									var a, b, c, d, e, f, g;
									if(this.done) return this.EOF;
									for(this._input || (this.done = !0), this._more || (this.yytext = "", this.match = ""), f = this._currentRules(), g = 0; g < f.length && (c = this._input.match(this.rules[f[g]]), !(c && (!b || c[0].length > b[0].length) && (b = c, d = g, !this.options.flex))); g++);
									return b ? (e = b[0].match(/\n.*/g), e && (this.yylineno += e.length), this.yylloc = {
										first_line: this.yylloc.last_line,
										last_line: this.yylineno + 1,
										first_column: this.yylloc.last_column,
										last_column: e ? e[e.length - 1].length - 1 : this.yylloc.last_column + b[0].length
									}, this.yytext += b[0], this.match += b[0], this.yyleng = this.yytext.length, this._more = !1, this._input = this._input.slice(b[0].length), this.matched += b[0], a = this.performAction.call(this, this.yy, this, f[d], this.conditionStack[this.conditionStack.length - 1]), this.done && this._input && (this.done = !1), a ? a : void 0) : "" === this._input ? this.EOF : void this.parseError("Lexical error on line " + (this.yylineno + 1) + ". Unrecognized text.\n" + this.showPosition(), {
										text: "",
										token: null,
										line: this.yylineno
									})
								},
								lex: function() {
									var a = this.next();
									return "undefined" == typeof a ? this.lex() : a
								},
								begin: function(a) {
									this.conditionStack.push(a)
								},
								popState: function() {
									return this.conditionStack.pop()
								},
								_currentRules: function() {
									return this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules
								},
								topState: function() {
									return this.conditionStack[this.conditionStack.length - 2]
								},
								pushState: function(a) {
									this.begin(a)
								},
								options: {},
								performAction: function(a, b, c) {
									switch(c) {
										case 0:
											break;
										case 1:
											return 6;
										case 2:
											return b.yytext = b.yytext.substr(1, b.yyleng - 2), 4;
										case 3:
											return 17;
										case 4:
											return 18;
										case 5:
											return 23;
										case 6:
											return 24;
										case 7:
											return 22;
										case 8:
											return 21;
										case 9:
											return 10;
										case 10:
											return 11;
										case 11:
											return 8;
										case 12:
											return 14;
										case 13:
											return "INVALID"
									}
								},
								rules: [/^(?:\s+)/, /^(?:(-?([0-9]|[1-9][0-9]+))(\.[0-9]+)?([eE][-+]?[0-9]+)?\b)/, /^(?:"(?:\\[\\"bfnrt\/]|\\u[a-fA-F0-9]{4}|[^\\\0-\x09\x0a-\x1f"])*")/, /^(?:\{)/, /^(?:\})/, /^(?:\[)/, /^(?:\])/, /^(?:,)/, /^(?::)/, /^(?:true\b)/, /^(?:false\b)/, /^(?:null\b)/, /^(?:$)/, /^(?:.)/],
								conditions: {
									INITIAL: {
										rules: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13],
										inclusive: !0
									}
								}
							};
							return a
						}();
					return a.lexer = b, a
				}(),
				g = f.parse;
			return f.parse = function(b) {
				var h, c = g.call(f, b),
					d = "undefined" == typeof e ? a("./doug-json-parse") : e;
				try {
					d(b)
				} catch(c) {
					if(console.error(c), /Duplicate key|Bad string|Unexpected/.test(c.message)) throw h = b.substring(0, c.at).split("\n").length, SyntaxError(c.message + " on line " + h)
				}
				return c
			}, d.parser = f, d.parse = function() {
				return f.parse.apply(f, arguments)
			}, d.main = function(c) {
				var e, f;
				if(!c[1]) throw new Error("Usage: " + c[0] + " FILE");
				return "undefined" != typeof b ? e = a("fs").readFileSync(a("path").join(b.cwd(), c[1]), "utf8") : (f = a("file").path(a("file").cwd()), e = f.join(c[1]).read({
					charset: "utf-8"
				})), d.parser.parse(e)
			}, a.main === c && d.main("undefined" == typeof b ? a("system").args : b.argv.slice(1)), d
		}();
		"object" == typeof a && a.exports && (a.exports = c)
	}.call(b, c(325))
}, function(a) {
	! function(b) {
		"use strict";
		var c = function(a) {
			var i, j, k, l, b = /"|(\/\*)|(\*\/)|(\/\/)|\n|\r|\[|]/g,
				c = !1,
				d = !1,
				e = !1,
				f = [],
				g = 0,
				h = 0;
			for(b.lastIndex = 0; i = b.exec(a);) k = RegExp.leftContext, l = RegExp.rightContext, d || e || (j = k.substring(h), !c && (j = j.replace(/(\n|\r|\s)*/g, "")), f[g++] = j), h = b.lastIndex, '"' !== i[0] || d || e ? "/*" !== i[0] || c || d || e ? "*/" !== i[0] || c || !d || e ? "//" !== i[0] || c || d || e ? "\n" !== i[0] && "\r" !== i[0] || c || d || !e ? !d && !e && !/\n|\r|\s/.test(i[0]) && (f[g++] = i[0]) : e = !1 : e = !0 : d = !1 : d = !0 : (j = k.match(/(\\)*$/), (!c || !j || 0 == j[0].length % 2) && (c = !c), h--, l = a.substring(h));
			return f[g++] = l, f.join("")
		};
		"undefined" != typeof a && a.exports ? (a.exports = c, JSON.minify = c) : (("undefined" == typeof b.JSON || !b.JSON) && (b.JSON = {}), b.JSON.minify = c)
	}(this)
}, function(a) {
	function c() {
		throw new Error("clearTimeout has not been defined")
	}

	function d(a) {
		if(k === setTimeout) return setTimeout(a, 0);
		if((k === b || !k) && setTimeout) return k = setTimeout, setTimeout(a, 0);
		try {
			return k(a, 0)
		} catch(b) {
			try {
				return k.call(null, a, 0)
			} catch(b) {
				return k.call(this, a, 0)
			}
		}
	}

	function e(a) {
		if(l === clearTimeout) return clearTimeout(a);
		if((l === c || !l) && clearTimeout) return l = clearTimeout, clearTimeout(a);
		try {
			return l(a)
		} catch(b) {
			try {
				return l.call(null, a)
			} catch(b) {
				return l.call(this, a)
			}
		}
	}

	function f() {
		n && p && (n = !1, p.length ? m = p.concat(m) : o = -1, m.length && g())
	}

	function g() {
		var a, b;
		if(!n) {
			for(a = d(f), n = !0, b = m.length; b;) {
				for(p = m, m = []; ++o < b;) p && p[o].run();
				o = -1, b = m.length
			}
			p = null, n = !1, e(a)
		}
	}

	function h(a, b) {
		this.fun = a, this.array = b
	}

	function i() {}
	var k, l, p, m, n, o, j = a.exports = {};
	! function() {
		try {
			k = "function" == typeof setTimeout ? setTimeout : b
		} catch(a) {
			k = b
		}
		try {
			l = "function" == typeof clearTimeout ? clearTimeout : a
		} catch(b) {
			l = a
		}
	}(), m = [], n = !1, o = -1, j.nextTick = function(a) {
		var c, b = Array(arguments.length - 1);
		if(1 < arguments.length)
			for(c = 1; c < arguments.length; c++) b[c - 1] = arguments[c];
		m.push(new h(a, b)), 1 !== m.length || n || d(g)
	}, h.prototype.run = function() {
		this.fun.apply(null, this.array)
	}, j.title = "browser", j.browser = !0, j.env = {}, j.argv = [], j.version = "", j.versions = {}, j.on = i, j.addListener = i, j.once = i, j.off = i, j.removeListener = i, j.removeAllListeners = i, j.emit = i, j.prependListener = i, j.prependOnceListener = i, j.listeners = function() {
		return []
	}, j.binding = function() {
		throw new Error("process.binding is not supported")
	}, j.cwd = function() {
		return "/"
	}, j.chdir = function() {
		throw new Error("process.chdir is not supported")
	}, j.umask = function() {
		return 0
	}
}, function(a, b, c) {
	! function(b) {
		! function(b) {
			"use strict";

			function c(a, b, c, d) {
				var f = b && b.prototype instanceof e ? b : e,
					g = Object.create(f.prototype),
					h = new n(d || []);
				return g._invoke = j(a, c, h), g
			}

			function d(a, b, c) {
				try {
					return {
						type: "normal",
						arg: a.call(b, c)
					}
				} catch(a) {
					return {
						type: "throw",
						arg: a
					}
				}
			}

			function e() {}

			function f() {}

			function g() {}

			function h(a) {
				["next", "throw", "return"].forEach(function(b) {
					a[b] = function(a) {
						return this._invoke(b, a)
					}
				})
			}

			function i(a) {
				function c(b, e, f, g) {
					var i, j, h = d(a[b], a, e);
					return "throw" !== h.type ? (i = h.arg, j = i.value, j && "object" == typeof j && r.call(j, "__await") ? Promise.resolve(j.__await).then(function(a) {
						c("next", a, f, g)
					}, function(a) {
						c("throw", a, f, g)
					}) : Promise.resolve(j).then(function(a) {
						i.value = a, f(i)
					}, g)) : (g(h.arg), void 0)
				}
				"object" == typeof b.process && b.process.domain && (c = b.process.domain.bind(c));
				var e;
				this._invoke = function(a, b) {
					function d() {
						return new Promise(function(d, e) {
							c(a, b, d, e)
						})
					}
					return e = e ? e.then(d, d) : d()
				}
			}

			function j(a, b, c) {
				var e = y;
				return function(f, g) {
					var h, i, j;
					if(e == A) throw new Error("Generator is already running");
					if(e == B) {
						if("throw" === f) throw g;
						return p()
					}
					for(c.method = f, c.arg = g;;) {
						if(h = c.delegate, h && (i = k(h, c))) {
							if(i === C) continue;
							return i
						}
						if("next" === c.method) c.sent = c._sent = c.arg;
						else if("throw" === c.method) {
							if(e == y) throw e = B, c.arg;
							c.dispatchException(c.arg)
						} else "return" === c.method && c.abrupt("return", c.arg);
						if(e = A, j = d(a, b, c), "normal" === j.type) {
							if(e = c.done ? B : z, j.arg === C) continue;
							return {
								value: j.arg,
								done: c.done
							}
						}
						"throw" === j.type && (e = B, c.method = "throw", c.arg = j.arg)
					}
				}
			}

			function k(a, b) {
				var e, f, c = a.iterator[b.method];
				if(void 0 === c) {
					if(b.delegate = null, "throw" === b.method) {
						if(a.iterator.return && (b.method = "return", b.arg = void 0, k(a, b), "throw" === b.method)) return C;
						b.method = "throw", b.arg = new TypeError("The iterator does not provide a 'throw' method")
					}
					return C
				}
				return e = d(c, a.iterator, b.arg), "throw" === e.type ? (b.method = "throw", b.arg = e.arg, b.delegate = null, C) : (f = e.arg) ? f.done ? (b[a.resultName] = f.value, b.next = a.nextLoc, "return" !== b.method && (b.method = "next", b.arg = void 0), b.delegate = null, C) : f : (b.method = "throw", b.arg = new TypeError("iterator result is not an object"), b.delegate = null, C)
			}

			function l(a) {
				var b = {
					tryLoc: a[0]
				};
				1 in a && (b.catchLoc = a[1]), 2 in a && (b.finallyLoc = a[2], b.afterLoc = a[3]), this.tryEntries.push(b)
			}

			function m(a) {
				var b = a.completion || {};
				b.type = "normal", delete b.arg, a.completion = b
			}

			function n(a) {
				this.tryEntries = [{
					tryLoc: "root"
				}], a.forEach(l, this), this.reset(!0)
			}

			function o(a) {
				var b, c, d;
				if(a) {
					if(b = a[t]) return b.call(a);
					if("function" == typeof a.next) return a;
					if(!isNaN(a.length)) return c = -1, d = function e() {
						for(; ++c < a.length;)
							if(r.call(a, c)) return e.value = a[c], e.done = !1, e;
						return e.value = void 0, e.done = !0, e
					}, d.next = d
				}
				return {
					next: p
				}
			}

			function p() {
				return {
					value: void 0,
					done: !0
				}
			}
			var y, z, A, B, C, D, E, F, G, q = Object.prototype,
				r = q.hasOwnProperty,
				s = "function" == typeof Symbol ? Symbol : {},
				t = s.iterator || "@@iterator",
				u = s.asyncIterator || "@@asyncIterator",
				v = s.toStringTag || "@@toStringTag",
				w = "object" == typeof a,
				x = b.regeneratorRuntime;
			return x ? void(w && (a.exports = x)) : (x = b.regeneratorRuntime = w ? a.exports : {}, x.wrap = c, y = "suspendedStart", z = "suspendedYield", A = "executing", B = "completed", C = {}, D = {}, D[t] = function() {
				return this
			}, E = Object.getPrototypeOf, F = E && E(E(o([]))), F && F !== q && r.call(F, t) && (D = F), G = g.prototype = e.prototype = Object.create(D), f.prototype = G.constructor = g, g.constructor = f, g[v] = f.displayName = "GeneratorFunction", x.isGeneratorFunction = function(a) {
				var b = "function" == typeof a && a.constructor;
				return !!b && (b === f || "GeneratorFunction" === (b.displayName || b.name))
			}, x.mark = function(a) {
				return Object.setPrototypeOf ? Object.setPrototypeOf(a, g) : (a.__proto__ = g, !(v in a) && (a[v] = "GeneratorFunction")), a.prototype = Object.create(G), a
			}, x.awrap = function(a) {
				return {
					__await: a
				}
			}, h(i.prototype), i.prototype[u] = function() {
				return this
			}, x.AsyncIterator = i, x.async = function(a, b, d, e) {
				var f = new i(c(a, b, d, e));
				return x.isGeneratorFunction(b) ? f : f.next().then(function(a) {
					return a.done ? a.value : f.next()
				})
			}, h(G), G[v] = "Generator", G[t] = function() {
				return this
			}, G.toString = function() {
				return "[object Generator]"
			}, x.keys = function(a) {
				var c, b = [];
				for(c in a) b.push(c);
				return b.reverse(),
					function d() {
						for(; b.length;) {
							var c = b.pop();
							if(c in a) return d.value = c, d.done = !1, d
						}
						return d.done = !0, d
					}
			}, x.values = o, n.prototype = {
				constructor: n,
				reset: function(a) {
					if(this.prev = 0, this.next = 0, this.sent = this._sent = void 0, this.done = !1, this.delegate = null, this.method = "next", this.arg = void 0, this.tryEntries.forEach(m), !a)
						for(var b in this) "t" === b.charAt(0) && r.call(this, b) && !isNaN(+b.slice(1)) && (this[b] = void 0)
				},
				stop: function() {
					this.done = !0;
					var a = this.tryEntries[0],
						b = a.completion;
					if("throw" === b.type) throw b.arg;
					return this.rval
				},
				dispatchException: function(a) {
					function b(b, d) {
						return f.type = "throw", f.arg = a, c.next = b, d && (c.method = "next", c.arg = void 0), !!d
					}
					var c, d, e, f, g, h;
					if(this.done) throw a;
					for(c = this, d = this.tryEntries.length - 1; d >= 0; --d) {
						if(e = this.tryEntries[d], f = e.completion, "root" === e.tryLoc) return b("end");
						if(e.tryLoc <= this.prev)
							if(g = r.call(e, "catchLoc"), h = r.call(e, "finallyLoc"), g && h) {
								if(this.prev < e.catchLoc) return b(e.catchLoc, !0);
								if(this.prev < e.finallyLoc) return b(e.finallyLoc)
							} else if(g) {
							if(this.prev < e.catchLoc) return b(e.catchLoc, !0)
						} else {
							if(!h) throw new Error("try statement without catch or finally");
							if(this.prev < e.finallyLoc) return b(e.finallyLoc)
						}
					}
				},
				abrupt: function(a, b) {
					var d, c, e, f;
					for(c = this.tryEntries.length - 1; c >= 0; --c)
						if(d = this.tryEntries[c], d.tryLoc <= this.prev && r.call(d, "finallyLoc") && this.prev < d.finallyLoc) {
							e = d;
							break
						}
					return e && ("break" === a || "continue" === a) && e.tryLoc <= b && b <= e.finallyLoc && (e = null), f = e ? e.completion : {}, f.type = a, f.arg = b, e ? (this.method = "next", this.next = e.finallyLoc, C) : this.complete(f)
				},
				complete: function(a, b) {
					if("throw" === a.type) throw a.arg;
					return "break" === a.type || "continue" === a.type ? this.next = a.arg : "return" === a.type ? (this.rval = this.arg = a.arg, this.method = "return", this.next = "end") : "normal" === a.type && b && (this.next = b), C
				},
				finish: function(a) {
					for(var c, b = this.tryEntries.length - 1; b >= 0; --b)
						if(c = this.tryEntries[b], c.finallyLoc === a) return this.complete(c.completion, c.afterLoc), m(c), C
				},
				"catch": function(a) {
					var c, b, d, e;
					for(b = this.tryEntries.length - 1; b >= 0; --b)
						if(c = this.tryEntries[b], c.tryLoc === a) return d = c.completion, "throw" === d.type && (e = d.arg, m(c)), e;
					throw new Error("illegal catch attempt")
				},
				delegateYield: function(a, b, c) {
					return this.delegate = {
						iterator: o(a),
						resultName: b,
						nextLoc: c
					}, "next" === this.method && (this.arg = void 0), C
				}
			}, void 0)
		}("object" == typeof b ? b : "object" == typeof window ? window : "object" == typeof self ? self : this)
	}.call(b, c(118))
}, function(a) {
	a.exports = function(a) {
		var b, c, d, e;
		return "SELECT" === a.nodeName ? (a.focus(), b = a.value) : "INPUT" === a.nodeName || "TEXTAREA" === a.nodeName ? (c = a.hasAttribute("readonly"), c || a.setAttribute("readonly", ""), a.select(), a.setSelectionRange(0, a.value.length), c || a.removeAttribute("readonly"), b = a.value) : (a.hasAttribute("contenteditable") && a.focus(), d = window.getSelection(), e = document.createRange(), e.selectNodeContents(a), d.removeAllRanges(), d.addRange(e), b = d.toString()), b
	}
}, function(a) {
	function b() {}
	b.prototype = {
		on: function(a, b, c) {
			var d = this.e || (this.e = {});
			return(d[a] || (d[a] = [])).push({
				fn: b,
				ctx: c
			}), this
		},
		once: function(a, b, c) {
			function d() {
				e.off(a, d), b.apply(c, arguments)
			}
			var e = this;
			return d._ = b, this.on(a, d, c)
		},
		emit: function(a) {
			var b = [].slice.call(arguments, 1),
				c = ((this.e || (this.e = {}))[a] || []).slice(),
				d = 0,
				e = c.length;
			for(d; e > d; d++) c[d].fn.apply(c[d].ctx, b);
			return this
		},
		off: function(a, b) {
			var f, g, c = this.e || (this.e = {}),
				d = c[a],
				e = [];
			if(d && b)
				for(f = 0, g = d.length; g > f; f++) d[f].fn !== b && d[f].fn._ !== b && e.push(d[f]);
			return e.length ? c[a] = e : delete c[a], this
		}
	}, a.exports = b
}, function(a, b, c) {
	c(120), a.exports = c(119)
}]);
window.sfi = 0, $(function() {
	$("#btnShouOrFang").click(function() {
		0 == window.sfi ? ($(this).text("点击俺恢复"), code.value = app.editor.getValue(), $(".CodeMirror").height(app.editor.getScrollInfo().height), app.editor.setValue(code.value), window.sfi = 1) : ($(".CodeMirror").height("320px"), window.sfi = 0, $(this).text("点击俺最大化"))
	})
});
/*EndSub*/